在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);
通過以上步驟,可以使用信號量確保線程同步。需要注意的是,信號量的初始值應根據實際需求進行設置,以確保正確的同步行為。