当前位置: 首页 > news >正文

网页设计的优缺点济南关键词优化费用情况

网页设计的优缺点,济南关键词优化费用情况,wordpress now 1.5,wordpress 免登陆接口三种关系#xff1a;互斥#xff0c;同步#xff0c;互斥和同步 两类角色:生产者#xff0c;消费者#xff08;线程#xff09; 一个交易场所#xff1a;生产者消费者共享的区域 卖苹果的模型 dish上面只有一个苹果买家必须要等卖家把苹果放到dish上才可以去买苹果。…三种关系互斥同步互斥和同步 两类角色:生产者消费者线程 一个交易场所生产者消费者共享的区域 卖苹果的模型 dish上面只有一个苹果买家必须要等卖家把苹果放到dish上才可以去买苹果。卖家必须等待买家把苹果买走才可以生产苹果pthread_mutex_lock(mutex); 和pthread_mutex_unlock(mutex); 成对出现里面的操作为一个原子操作pthread_cond_wait(empty,mutex);内部有一个加锁解锁操作过程详解 苹果为0初始化时苹果为0买家在pthread_cond_wait(empty,mutex); 开始等待卖家不进入while循环生产苹果后发出pthread_cond_signal(empty);让正在因dish上苹果为0的买家停止等待pthread_cond_wait(empty,mutex);苹果为1当一个卖家进入pthread_mutex_lock(mutex); 但是发现苹果为1时就在while循环处等待pthread_cond_wait(empty,mutex);直到买家发出信号 pthread_cond_signal(full);卖家停止等待此时苹果为0跳出while循环开始生产苹果。生产苹果后发出pthread_cond_signal(empty);让正在因dish上苹果为0的买家停止等待pthread_cond_wait(empty,mutex); 这样这个过程就结束了 * #include stdio.h #include unistd.h #include stdlib.h #include pthread.hint dish 0; pthread_cond_t full; pthread_cond_t empty; pthread_mutex_t mutex;void * consumer(void * arg) {int id (int)arg;while(1){pthread_mutex_lock(mutex);//上锁while(dish 0){//买家发现没有苹果开始等待pthread_cond_wait(empty,mutex);}usleep(100000);dish 0;printf(consumer %d get an apple!!\n, id);//给卖家发送信号pthread_cond_signal(full);pthread_mutex_unlock(mutex);//解锁}return NULL; }void * product(void *arg) {int id (int)arg;while(1){pthread_mutex_lock(mutex); while(dish 1){pthread_cond_wait(full,mutex);}dish 1;printf(producer %d put an apple!!\n, id); pthread_cond_signal(empty);pthread_mutex_unlock(mutex);}return NULL; }int main() {pthread_t tid;int set ;//初始化pthread_cond_init(full,NULL);pthread_cond_init(empty,NULL);pthread_mutex_init(mutex,NULL);//四个卖家生产苹果for(int i 0;i4;i){pthread_create(tid,NULL,product,(void *)i);}//四个买家买苹果for(int i 0;i4;i){pthread_create(tid,NULL,consumer,(void *)i);}//等待thread标识的线程终止防止僵尸进程产生pthread_join(tid,NULL);//销毁所有资源pthread_cond_destroy(full);pthread_cond_destroy(empty);pthread_mutex_destroy(mutex); } 如果对于互斥量含义尚不清楚建议阅读Linux/UNIX系统编程手册 pthread_mutex_t pthread_mutex_init pthread_mutex_lock pthread_mutex_unlock pthread_mutex_destroy 模型采取Linux/UNIX系统编程手册 这个模型很好也把概念讲清楚了加了中文注释 生产者 s pthread_mutex_lock(mtx); if (s ! 0)errExitEN(s, pthread_mutex_lock);avail; /*这是一个原子操作 */s pthread_mutex_unlock(mtx); if (s ! 0)errExitEN(s, pthread_mutex_unlock);s pthread_cond_signal(cond); /* 唤醒消费者 */ if (s ! 0)errExitEN(s, pthread_cond_signal); 消费者 s pthread_mutex_lock(mtx); if (s ! 0)errExitEN(s, pthread_mutex_lock);while (avail 0){ s pthread_cond_wait(cond, mtx);if (s ! 0)errExitEN(s, pthread_cond_wait); } 完整代码 #include time.h #include pthread.h #include tlpi_hdr.hstatic pthread_mutex_t mtx PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t cond PTHREAD_COND_INITIALIZER;static int avail 0;static void * threadFunc(void *arg) {int cnt atoi((char *) arg);int s, j;for (j 0; j cnt; j) {sleep(1);/* Code to produce a unit omitted */s pthread_mutex_lock(mtx);if (s ! 0)errExitEN(s, pthread_mutex_lock);avail; /* Let consumer know another unit is available */s pthread_mutex_unlock(mtx);if (s ! 0)errExitEN(s, pthread_mutex_unlock);s pthread_cond_signal(cond); /* Wake sleeping consumer */if (s ! 0)errExitEN(s, pthread_cond_signal);}return NULL; }int main(int argc, char *argv[]) {pthread_t tid;int s, j;int totRequired; /* Total number of units that all threadswill produce */int numConsumed; /* Total units so far consumed */Boolean done;time_t t;t time(NULL);/* Create all threads */totRequired 0;for (j 1; j argc; j) {totRequired atoi(argv[j]);s pthread_create(tid, NULL, threadFunc, argv[j]);if (s ! 0)errExitEN(s, pthread_create);}/* Loop to consume available units */numConsumed 0;done FALSE;for (;;) {s pthread_mutex_lock(mtx);if (s ! 0)errExitEN(s, pthread_mutex_lock);while (avail 0) { /* Wait for something to consume */s pthread_cond_wait(cond, mtx);if (s ! 0)errExitEN(s, pthread_cond_wait);}/* At this point, mtx is locked... */while (avail 0) { /* Consume all available units *//* Do something with produced unit */numConsumed ;avail--;printf(T%ld: numConsumed%d\n, (long) (time(NULL) - t),numConsumed);done numConsumed totRequired;}s pthread_mutex_unlock(mtx);if (s ! 0)errExitEN(s, pthread_mutex_unlock);if (done)break;/* Perhaps do other work here that does not require mutex lock */}exit(EXIT_SUCCESS); }
http://www.sadfv.cn/news/6533/

相关文章:

  • 网上效果代码网站可以下载吗软文营销的特点
  • 友情网站制作wordpress菜单新窗口打开
  • 崇左市城市投资建设有限公司网站seo站长工具下载
  • 河南网站建设软件厦门 网站备案
  • 百度注册网站怎么弄减肥网站源码
  • 什么是响应式营销型网站建设东莞厚街天气
  • 网站里的动画是什么软件做的宁波网页设计哪家好
  • 营销型网站搭建百度网站大全旧版
  • 公司制作一个网站图书馆主题 wordpress
  • 专注高密做网站哪家好一般网站开发公司
  • 东源建设局网站推荐做网站的公司
  • 做网上推广网站凡科免费建微信小程序网站
  • 网站防红链接怎么做wordpress 走马灯
  • 网站产品展示单页模板课程网站建设简介
  • 甘肃省住房建设厅网站江门网站开发多少钱
  • 湛江免费网站制作企业网站seo名称
  • 付费资料网站开发wordpress some chinese please
  • 网站建设赚钱吗招聘设计师去哪个网站
  • 建立一个网站怎样赚钱做网站课程报告
  • 做甲方去哪个网站应聘辽宁建设执业继续教育协会网站
  • 猪八戒 网站开发支付做外汇网站代理赚钱吗
  • 四川建设招标网站首页有哪些网站是cms
  • 电商网站 厦门辽宁省建设厅证书查询网站
  • 微信端怎么建设网站创建网站免费
  • 品牌网站设计制作哪家好营销网站建设培训学校
  • 农产品网站开发 文献综述网站浏览记录怎么做
  • 国外做ui的网站j云服务器建设网站用什么系统
  • 一个成功的网站必须具备网站开发一个人可以完成吗
  • 西安高端网站建设首选网站建设用细节取胜
  • 怎样做网站上更改文字郴州网站建设公司哪家好