【发布时间】:2012-09-01 09:30:23
【问题描述】:
我正在阅读一些互斥量和信号量。
我有一段代码
int func()
{
i++;
return i;
}
i 在外部某处被声明为全局变量。 如果我创建计数为 3 的计数信号量,它不会有竞争条件吗?这是否意味着在这种情况下我应该使用二进制信号量或互斥量?
谁能给我一些可以使用互斥锁、临界区和信号量的实用场景。
可能我读了很多。最后,我现在有点困惑。谁能理清思路。
P.S:我知道互斥量和二进制信号量之间的主要区别是所有权。和计数信号量应该用作信号机制。
【问题讨论】:
-
你是对的,在这种情况下,互斥锁是正确的选择。但是,就目前而言,这个问题对于 SO imo 来说太宽泛了。
-
你能解释一下不同线程如何访问
i吗? -
假设我正在通过一个 for 循环创建 100 个线程。单个线程调用此函数。但是我创建了一个计数为 5 的信号量。那么我仍然需要一个互斥锁来访问共享资源 rit 吗?
标签: c++ multithreading synchronization