加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux的多线程编程的高效开发经验

发布时间:2016-01-26 08:25:17 所属栏目:Linux 来源:网络整理
导读:简介:本文中我们针对 Linux 上多线程编程的主要特性总结出 5 条经验, 用以改善 Linux 多线程编程的习惯和避免其中的开发陷阱。在本文中,我们穿 插一些 Windo

……
 // 提示出租车到达的条件变量
 pthread_cond_t taxiCond;

 // 同步锁
 pthread_mutex_t taxiMutex;

 // 旅客人数,初始为 0 
 int travelerCount=0;

 // 旅客到达等待出租车
 void * traveler_arrive(void * name) {
  cout<< ” Traveler: ” <<(char *) name<< ” needs a taxi now! ” <<endl;
  pthread_mutex_lock(&taxiMutex);

  // 提示旅客人数增加
  travelerCount++;
  pthread_cond_wait (&taxiCond, &taxiMutex);
  pthread_mutex_unlock (&taxiMutex);
  cout<< ” Traveler: ” << (char *)name  << ” now got a taxi! ” <<endl;
  pthread_exit( (void *)0 );
 }

 // 出租车到达
 void * taxi_arrive(void *name)
 {
  cout<< ” Taxi ” <<(char *) name<< ” arrives. ” <<endl;

 while(true)
 {
    pthread_mutex_lock(&taxiMutex);

    // 当发现已经有旅客在等待时,才触发条件变量
    if(travelerCount>0)
    {
      pthread_cond_signal(&taxtCond);
      pthread_mutex_unlock (&taxiMutex);
      break;
    }
    pthread_mutex_unlock (&taxiMutex);
  }

  pthread_exit( (void *)0 );
 }

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读