是否有等效的Java等待和通知?

时间:2017-03-16 15:00:24

标签: c pthreads

我正在使用posix线程并且有一个workerRoutine,在某些情况下必须等待I / O.

//WorkerRoutine
while(true){
    if(NO CURRENT WORK){
      //sleep for I/O
      continue;
    }
    //Other cases....
}

我的I / O功能更新了一个静态大小的列表。我的问题是,当一个工人没有当前工作时,正忙着等待。我想在worker函数中使用sleep函数,在readList(I / O)函数中使用wake函数。在C中执行此操作的最佳方法是什么?

1 个答案:

答案 0 :(得分:8)

最接近Java的waitnotify方法的pthreads可用作接受条件变量的函数。设置条件变量,调用pthread_cond_wait等待工作,pthread_cond_signal宣布工作可用。

可以轻松找到使用示例on StackOverflow.elsewhere

如果您正在等待IO,另一种可能性是使用poll或等效数据来睡眠,直到数据到达。