我正在使用posix线程并且有一个workerRoutine,在某些情况下必须等待I/O.
//WorkerRoutine
while(true){
if(NO CURRENT WORK){
//sleep for I/O
continue;
}
//Other cases....
}
Run Code Online (Sandbox Code Playgroud)
我的I/O功能更新了一个静态大小的列表.我的问题是,当一个工人没有当前工作时,正忙着等待.我想在worker函数中使用sleep函数,在readList(I/O)函数中使用wake函数.在C中执行此操作的最佳方法是什么?
最接近的Java wait和notify方法的pthreads 可用作接受条件变量的函数.设置条件变量,调用pthread_cond_wait等待工作,并pthread_cond_signal宣布工作可用.
可以在StackOverflow上轻松找到用法示例.和其他地方.
如果您正在等待IO,则另一种可能性是使用poll或等效于睡眠,直到数据到达.