1、选用什么标准的信号量
在Linux中信号量有两种标准,一种是System V,另一种是Posix标准。其中System V是早期的标准;
Posix(Portable Operating System Interface )是一个由IEEE开发的一系列标准,它还是由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准。而System v是Unix操作系统众多版本的一个分支。
实际使用中Posix标准封装地更好,使用更简单。一般线程间的同步使用Posix无名信号量比较方便。但是sem_wait成功后获取信号灯后,进程如果意外终止。
2、使用过程中常见问题汇总
(1)System V标准下获取信号量值的用法为val = semctl(semid, 0, GETVAL);
(2)semaphore信号量和互斥量的区别:semaphore信号量会将竞争的线程挂起,保证前一个线程从阻塞态释放后后一个线程能够被处理。而mutex则不保证这一点(可能一个线程恰好每次轮到它执行,而对资源独占或者分配不均的情况)。
(3)不同进程之间用有名信号量同步的时候,一般用共享内存将标识字符串存储起来。
未完待续。。。