如果使用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...