Pthread condvar成语

时间:2013-08-19 13:13:39

标签: c concurrency pthreads

我很好奇是否有人使用过类似的东西:

pthread_mutex_lock(&ctx->processing_pipeline.feeder_safe_point_mutex);

while(!ctx->processing_pipeline.feeder_safe_point)
  pthread_cond_wait(&ctx->processing_pipeline.feeder_safe_point_cv, &ctx->processing_pipeline.feeder_safe_point_mutex);

pthread_mutex_unlock(&ctx->processing_pipeline.feeder_safe_point_mutex);

...等待condvar。

我们的想法是,当事件完成后,feeder_safe_point int变量将设置为1,然后等待线程将被唤醒。

此外,建议使用condvars序列化多线程执行的方法

1 个答案:

答案 0 :(得分:3)

是的,这正是你应该如何使用pthreads条件变量。 ctx->processing_pipeline.feeder_safe_point也应仅在ctx->processing_pipeline.feeder_safe_point_mutex已锁定时修改。