C 訊號量的使用

2021-09-28 14:27:21 字數 1501 閱讀 7231

在程序間通訊時,對於訊息的通訊,有時候回用到訊號量,本次就實現乙個case,簡單介紹訊號量如何在程序之間實現訊息收發的同步。

首先,了解一下訊號量的定義,及介面類

class interprocess_semaphore

;

其次,構造乙個訊息的結構體

struct my_shared_memory_buffer

boost::interprocess::interprocess_semaphore mutex;

boost::interprocess::interprocess_semaphore empty;

boost::interprocess::interprocess_semaphore store;

int itemdata;

};

3. 建立乙個程序a,這裡只寫了函式的形式,具體介面自己實現

void sharedmemory_semaphore_a()

~shm_remove()

}remover;

(void)remover;

shared_memory_object shm(create_only, "mysharedmemory", read_write);

shm.truncate(sizeof(my_shared_memory_buffer));

void *addr = region.get_address();

my_shared_memory_buffer *data = new(addr)my_shared_memory_buffer;

const int number = 10;

for (int i = 0; i < number; i++)

}

4. 建立程序b

void sharedmemory_semaphore_b()

}remover;

(void)remover;

shared_memory_object shm(open_only, "mysharedmemory", read_write);

void *addr = region.get_address();

my_shared_memory_buffer *data = static_cast(addr);

const int number = 10;

int get_data;

(void)get_data;

while(true)

}

5. 啟動測試

注意: 用的時候,一定注意不要死鎖,訊號量的處理一定要小心。

C 訊號量使用示例

using system using system.collections.generic using system.linq using system.text using system.threading author kagula date 2015 6 16 environment vs20...

訊號量 二值訊號量

訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...

python訊號量 Python訊號量

python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...