日期:2014-05-16  浏览次数:20810 次

请问在单进程,多线程程序里,线程间使用IPC的信号量来同步,能行吗?
如果一个线程在获取信号量时阻塞,是不是整个进程就阻塞了,也就是所有的线程同时阻塞,整个程序再无法往下执行??谢谢

------解决方案--------------------
不是,我们公司的程序大多是这样做的
------解决方案--------------------
just try it!
------解决方案--------------------
如果你使用的是系统的信号量,他是系统级的,可以在不同的进程间实现同步,当然也可以在同一个进程的不同线程间同步。
而对于阻塞问题,要看你线程的实现机制。linux的线程有两种实现机制,用户级和核心级。如果是用户级线程,则如果进程的任何一个线程阻塞,其他线程也会阻塞。

具体的你要在你的环境里测试了。
------解决方案--------------------
理论上是。 信号量的阻塞是进程级的。

但如果你用的是linux那就不是。因为linux得线程也有pid,其实就是进程。