在C++中,信号量(semaphore)是一种用于控制多个线程访问共享资源的同步原语
<semaphore.h>
头文件以使用C++标准库中的信号量功能。#include <semaphore.h>
sem_init()
函数来初始化信号量。sem_t sem;
int initial_value = 1; // 可以同时访问共享资源的线程数
sem_init(&sem, 0, initial_value);
sem_wait()
函数来请求信号量。如果信号量的值大于0,则线程可以继续执行并减少信号量的值。如果信号量的值为0,则线程将被阻塞,直到其他线程释放信号量。sem_wait(&sem); // 请求信号量
// 临界区代码(访问共享资源)
sem_post(&sem); // 释放信号量
sem_destroy()
函数来销毁信号量。sem_destroy(&sem);
通过以上步骤,可以使用信号量确保线程同步。需要注意的是,信号量的初始值应根据实际需求进行设置,以确保正确的同步行为。