3个线程的信号量相同的isntance

时间:2018-06-09 12:22:26

标签: semaphore

我想知道,如何使用C语言中的信号量来阻止同一个实例的多个线程。我已经将线程定义为收集数据的东西,我想要运行3个线程。线程完成后,它应该等到它被释放并允许再次运行或终止。默认情况下,只有在所有3个线程都准备就绪时才应该这样做。为了模拟不同的结束时间,我将随机时间从1到4秒的睡眠时间传递出去。      void* collectingElf(void* arg) { printf("\nCollecting!\n"); sleep((rand() % (upper + lower + 1)) + lower); }

我尝试了不同的想法 - 第一个想法是初始化值为2的信号量,并在线程完成时调用wait,但是,这只会阻塞调用0的最后一个线程;如果我为每个线程创建一个信号量,我该如何实现呢?

一些背景:我必须这样做以显示对信号量的理解,虽然这里没有共享变量,但我必须使用信号量,并且我无法弄清楚如何在它们完成后阻止它们。

0 个答案:

没有答案