面试题答案
一键面试- 头文件:
- 需要包含
<semaphore.h>
头文件,它提供了信号量相关的函数和类型定义。
- 需要包含
- 基本步骤:
- 定义信号量变量:
定义一个
sem_t
类型的变量,例如:sem_t sem;
- 初始化信号量:
使用
sem_init
函数进行初始化。函数原型为int sem_init(sem_t *sem, int pshared, unsigned int value);
。sem
:指向要初始化的信号量对象的指针,即前面定义的sem
变量。pshared
:若其值为0,表示信号量是进程内共享,只能用于当前进程的线程间同步;若为非0值,表示信号量可以在多个进程间共享。value
:信号量的初始值,例如设置为1表示二值信号量,设置为大于1的值可用于控制资源数量的计数信号量。 示例代码:sem_init(&sem, 0, 1);
// 初始化一个进程内共享且初始值为1的信号量。
- 定义信号量变量:
定义一个
在程序结束时,若信号量不再使用,可使用sem_destroy
函数销毁信号量,函数原型为int sem_destroy(sem_t *sem);
,例如sem_destroy(&sem);
。这一步确保释放与信号量相关的系统资源。