多个线程如何使用信号量在关键部分中不死锁

时间:2015-02-19 21:05:18

标签: multithreading semaphore critical-section

我最近读过有关信号量的信息,并获得了大部分逻辑。

除了事实,

当我们说Semaphore的值为5时,这意味着5个线程无法进入关键部分,但我们如何确保这5个线程不会尝试访问它们资源再次导致并发问题。

这是我们应该手动管理的吗?

1 个答案:

答案 0 :(得分:0)

我认为你倒退了:)

您可以使用计数来创建信号量,以便可以输入多少并发线程数。

假设您有五个资源用于完成某项工作,然后创建计数为5的信号量。这意味着尝试使用WaitOne进入信号量的前五个线程进入,在此过程中减少计数器。

当线程通过Release退出受保护区域时,它会再次递增计数器。

如果一个线程在计数为零或以下时尝试进入,则该线程将阻塞,直到其中一个线程已经“存在”信号量中。

这样,任何时候只有五个线程可以“进入”受保护区域。