我很好奇是否有人使用过类似的东西:
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序列化多线程执行的方法
答案 0 :(得分:3)
是的,这正是你应该如何使用pthreads条件变量。 ctx->processing_pipeline.feeder_safe_point
也应仅在ctx->processing_pipeline.feeder_safe_point_mutex
已锁定时修改。