网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

多线程共享数据

线程间的数据共享

创新互联专业为企业提供武陵源网站建设、武陵源做网站、武陵源网站设计、武陵源网站制作等企业网站建设、网页设计与制作、武陵源企业网站模板建站服务,十多年武陵源做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

     多个线程共享数据, A线程生产物品,产品数量增加,B线程使用,那么产品数量减少,B线程如何知道产品buf是否为空呢?A线程如何判断产品buf为满?
1 轮询机制
      线程每隔一定时间检查缓冲区,如果有产品就取出,这种机制需要控制好轮询间隔,查询太频繁会导致占用cpu过多,浪费;查询太不频繁导致缓冲区满,生产者放不进去产品
  int buf[MAX];
  int ProductionCount;
  while(1)
  {
  Msleep(100);
     if(ProductionCount > 0)
       {
        use it;
     ProductionCount --;
    }
  }
 2,信号量机制
      信号量和线程,互斥锁等一样,是操作系统提供的功能
   对于上述问题,可以创建一个信号量对象,生产线程每次生产完可以调用post使得信号量+1,消费只调用wait函数;使信号量减1,如果信号量为0,消费线程会等待,,
   Semaphore sem(0);
   A线程
       while(1)
    {
        ...
     sem.post();
    }
     B线程
      while(1)
   {
       ....
    sem.wait();      //如果信号量为0,那么会等待,
   }
 超时等待
 int res = sem。wait(1000); //ms
 if( res != 0)
    。。。。。;
 如果等待超过 1000秒,那么res返回 !0,可以执行某些操作。。
 

 


网站名称:多线程共享数据
路径分享:http://bjjierui.cn/article/pccjis.html

其他资讯