【问题标题】:Is there a C equivalent of Java Waits and Notify?是否有与 Java Waits and Notify 等效的 C 语言?
【发布时间】:2017-03-16 15:00:24
【问题描述】:

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

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

我的 I/O 函数更新了一个静态大小的列表。我的问题是,当工人没有当前工作时,就会忙着等待。我想在工作函数中有一个睡眠函数,在我的 readList(I/O)函数中有一个唤醒函数。在 C 中执行此操作的最佳方法是什么?

【问题讨论】:

    标签: c pthreads


    【解决方案1】:

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

    使用示例可以很容易地找到on StackOverflow.elsewhere

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

    【讨论】:

    • 是的,这与 Java 的 Object.wait()Object.notify() 非常相似,包括与互斥体(Java:监视器)的关系。还有pthread_cond_broadcast() 类似于Java 的Object.notifyAll()
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2018-11-20
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多