在C++中,信號(hào)量(semaphore)是一種用于控制多個(gè)線程訪問(wèn)共享資源的同步原語(yǔ)
<semaphore.h>
頭文件以使用C++標(biāo)準(zhǔn)庫(kù)中的信號(hào)量功能。#include <semaphore.h>
sem_t sem;
int initial_value = 1; // 可以同時(shí)訪問(wèn)共享資源的線程數(shù)
sem_init(&sem, 0, initial_value);
sem_wait()
函數(shù)來(lái)請(qǐng)求信號(hào)量。如果信號(hào)量的值大于0,則線程可以繼續(xù)執(zhí)行并減少信號(hào)量的值。如果信號(hào)量的值為0,則線程將被阻塞,直到其他線程釋放信號(hào)量。sem_wait(&sem); // 請(qǐng)求信號(hào)量
// 臨界區(qū)代碼(訪問(wèn)共享資源)
sem_post(&sem); // 釋放信號(hào)量
sem_destroy(&sem);
通過(guò)以上步驟,可以使用信號(hào)量確保線程同步。需要注意的是,信號(hào)量的初始值應(yīng)根據(jù)實(shí)際需求進(jìn)行設(shè)置,以確保正確的同步行為。