0

我有 3 个线程。所有人都具有同等的优先权。每个人都必须打印“我是线程 i”,其中 i 对应于线程编号。我如何以这样的方式同步它们,输出应该是我是线程 1 我是线程 2 我是线程 3

如果每个线程的优先级不同,这将很容易实现,但是如果我想保持相同的优先级,我该如何实现呢?

是否有任何操作系统原语或任何 POSIX 机制可用于实现此目的?

4

1 回答 1

1

我认为从学术/学习的角度来看,以您想要的特定顺序执行线程更多,否则它违背了多线程编程的目的。

实现它的方法之一是使用 pthread 库提供的条件变量。

pthread_cond_wait() 将导致调用线程阻塞某个变量值,一旦达到某个值,可以使用“唤醒”这个阻塞的线程pthread_cond_signal()

有关显示使用 pthread 条件变量的描述和代码的简单示例,请参阅此内容。

于 2013-10-25T11:09:55.950 回答