1

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

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 序列化多个线程的执行的推荐方法是什么

4

1 回答 1

3

是的,这正是您应该使用 pthreads 条件变量的方式。 ctx->processing_pipeline.feeder_safe_point也应该只使用ctx->processing_pipeline.feeder_safe_point_mutex锁定进行修改。

于 2013-08-19T13:26:38.380 回答