【发布时间】:2022-01-11 01:03:50
【问题描述】:
问题说 Thread1 需要输入 2 个数字。 Thread2 要求选择(添加/订阅)。 Thread3 执行计算,主线程打印结果。使用信号量进行同步。 如何划分线程,每个线程将执行不同的操作。我是新手,所以我很困惑。
【问题讨论】:
-
对于线程之间的同步,您可能希望使用互斥锁。见
mtx_函数@Thread support library -
@Ted Lyngmo,一个 pthread.h 互斥锁不能由与锁定它的线程不同的线程解锁。 thread.h 互斥体是否相同?如果是这样,您也需要一个 cond var。但这是某种需要信号量的赋值,所以最好使用它。无论如何,信号量在这里都能很好地工作。
-
@ikegami 是的,我想可以旋转一个 lock-check_if_its_my_time_to_run-unlock 循环,但这会消耗 CPU,因此最好使用条件变量。 Raisa:标准条件变量的函数在同一页,命名为
cnd_ -
@TedLyngmo ??如果使用信号量,则不需要任何锁检查。
-
@MartinJames 不,这是对 ikegami w.r.t 的回复。如果使用互斥体,则需要添加条件变量。它与信号量无关。
标签: c multithreading semaphore