日期:2014-05-16  浏览次数:20728 次

linux怎么加检测超时程序!!!
各位好:
我现在做的一个项目: 有这样一个情景:  
有两个线程A和B,  
  A线程用来检测B线程是否处理好数据, 如果处理好了, 就从B线程中的共享内存中读取数据,!
  我现在的做法是: A线程用while(1) 这样是死循环来等待B线程处理好数据,但是这样做有个坏处就是万一B线程死了,或者退出了,A线程就无法工作了.
   
  我想改成用检测socket的方式,在A线程中用select来检测 是否超时, 如果等待超时,A线程就返回,不在一直检测,可是感觉想B线程只是一个数据,不是文件ID,怎么知道是否可读或可写呢,

  请问下各位,大家遇到这样的情况如何处理,谢谢!

  (我试过msgrcv和msgsnd 这样的函数,可是这样的函数也是阻塞类型的.)

------解决方案--------------------
pthread_cond_signal只会唤醒某个等待的线程
如何你想唤醒所有等待的线程,可以用pthread_cond_broadcast