c语言信号量使用心得体会

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)不同进程之间用有名信号量同步的时候,一般用共享内存将标识字符串存储起来。

未完待续。。。




猜你喜欢

转载自blog.csdn.net/lyw736632087/article/details/80776656