【发布时间】:2013-10-24 00:36:25
【问题描述】:
我有 3 个线程。所有人都具有同等的优先权。每个人都必须打印“我是线程 i”,其中 i 对应于线程编号。我如何以这样的方式同步它们,输出应该是 我是线程 1 我是线程 2 我是线程 3
如果每个线程的优先级不同,这很容易实现,但如果我想保持相同的优先级,我该如何实现呢?
我可以使用任何操作系统原语或任何 POSIX 机制来实现这一点吗?
【问题讨论】:
-
首先引入线程,然后序列化它们的执行——这样做的目的是什么?无论如何,根据您的平台,您将拥有几个可用于此目的的同步原语。例如。您可以为每个最初未发出信号的线程手动重置事件,并且每个线程都会阻塞,直到发出信号为止。然后向第一个发出信号以唤醒线程 1。然后在完成时发出信号事件 2 以唤醒线程 2,依此类推。
-
'如果每个线程的优先级不同,这将很容易实现' - 不,不会。
标签: multithreading synchronization pthreads posix semaphore