首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于信号量的一个基础有关问题

2013-08-16 
关于信号量的一个基础问题假如我创建了一个信号量并初始化为0HANDLE hSem ::CreateSemaphore(NULL, 0, 0

关于信号量的一个基础问题
假如我创建了一个信号量并初始化为0
HANDLE hSem = ::CreateSemaphore(NULL, 0, 0xFFFFFFFF, NULL);


假如现在有5个后台线程同时在等待这个信号量
WaitForSingleObject(hSem, INFINITE);

假如现在有个线程将信号量置1
ReleaseSemaphore(hSem);

那么接下来这5个的线程将如何执行?
假如有10个cpu 这5个线程都在执行中 那么 这5个线程会同时从WaitForSingleObject返回吗?

假如我只有一个cpu 那是不是只有一个后台线程会从WaitForSingleObject中返回了?
那如果我希望在在将信号量置1的时候 只有一个后台线程会从WaitForSingleObject中返回 要如何做?

刚开始接触多线程, 问的问题比较白痴,还请见谅。

[解决办法]
《Windows核心编程》
[解决办法]
不会,只会给其中一个!
[解决办法]
信号量置1,那么只有1个线程能抢到这个信号量,并且信号量-1
其余的线程只能继续等待。
[解决办法]
算是PV语句了吧?看看PV语句怎么说的,貌似一个负责加1,一个负责减1.
貌似学过1对1的,1对多还没见过,可以建立多个信号量,分给多对进程组合。

热点排行