Linux下的訊號燈semaphore的應用

2021-06-22 23:17:25 字數 454 閱讀 9231

如果使用mutex_lock,mutex_unlock方式同步操作,如果當很長一段時間內都沒有任何操作,

但是執行緒依然會不停地執行lock,unlock操作。所以這樣的做法是完全沒有任何的意義的。

linux系統還提供了另外一種同步機制,訊號燈,semaphore。使用方法如下例子:

示例說明:乙個執行緒在控制台輸入,另乙個執行緒將輸入的結果列印顯示。

示例**如下:

#include "pthread_head.h"

sem_t sem;

char buf[size];

void *tfn1(void *arg)

return (void*)0;

}void *tfn2(void *arg)

return (void*)0;

}int main(void)

訊號燈執行緒

這裡設定了乙個boolean的值,預設值是false 這裡面有二個執行緒,二個執行緒同時進入到tv 想象為容器 這個容器中 去拿資料!注意這裡有乙個boolean型別的燈!執行緒進去尋找方法!當boolean true的時候,生產表演了 voice!當boolean false的時候!就進去了!然後...

Linux環境程序間通訊(四) 訊號燈

一 訊號燈概述 訊號燈與其他程序間通訊方式不大相同,它主要提供對程序間共享資源訪問控制機制。相當於記憶體中的標誌,程序可以根據它判定是否能夠訪問某些共享資源,同時,程序也可以修改該標誌。除了用於訪問控制外,還可用於程序同步。訊號燈有以下兩種型別 二 linux訊號燈 linux對訊號燈的支援狀況與訊...

semget建立檔案 linux訊號燈操作

訊號量 乙個整數 大於或等於0時代表可供併發程序使用的資源實體數 小於0時代表正在等待使用臨界區的程序數 用於互斥的訊號量初始值應大於0 只能通過p v原語操作而改變 訊號量元素組成 1 表示訊號量元素的值 2 最後操作訊號量元素的程序id 3 等待訊號量元素值 1的程序數 4 等待訊號量元素值為0...