1. 信号量:
简述:用于进程传递信号的一个整数值。它在linux C++中表示为sem_t包含在<semaphore.h>中。
操作:
函数sem_init原型如下:
/* Initialize semaphore object SEM to VALUE. If PSHARED then share it
with other processes. */
extern int sem_init (sem_t *__sem, int __pshared, unsigned int __value)
__THROW;
参数介绍:
__sem为需要初始的sem_t的指针
__pshared为共享属性。不为0则在进程间共享,否则只在本进程间共享。
__value给出了信号量的初始值
函数sem_post原型如下:
/* Post SEM. */
extern int sem_post (sem_t *__sem) __THROWNL;
作用就是将传入的信号量的值加1。当有线程在该信号量阻塞的话,线程就可以从队列中被放出来执行。
函数sem_wait原型如下:
/* Wait for SEM being posted.
This function is a cancellation point and therefore not marked with
__THROW. */
extern int sem_w

本文介绍了Linux C++环境下多线程编程中的信号量和条件变量。信号量用于进程间同步,通过sem_init、sem_post、sem_wait和sem_destroy等函数进行操作。条件变量在条件满足时获取锁,使用pthread_cond_init、pthread_cond_wait和pthread_cond_signal等函数实现线程间的协作。这两个机制都是多线程编程中重要的同步工具。
最低0.47元/天 解锁文章
1091

被折叠的 条评论
为什么被折叠?



