通過乙個簡單的例子,總結一下pthread中訊號量的使用方式以及使用pthread_detach和使用pthread_join的區別。以備以後查閱。
涉及到的函式:
sigemptyset:初始化訊號量並清空。
sigaddset:把訊號加入訊號集,這樣在等待訊號量時,也可以等待乙個訊號量的集合中的某乙個訊號。
int sigwait(const sigset_t *set, int *sig):等待訊號集,並返回接收到的訊號量。
pthread_detach(pthread_t thread):如果執行緒呼叫了該函式,主程序不會被阻塞等待執行緒結束才返回,而是啟動了執行緒後去繼續自己的工作。這是它與pthread_join()不同的地方。
例項程式 1 (使用 pthread_join)
#include #include #include #include #include #include void sig_handler(int signum)
void* sigmgr_thread(void* p)
else
}}int main()
\n");
return 0;
}
測試結果:程式會一直等待,直到人為結束(ctrl+c)
例項程式 2 (使用 pthread_detach)
#include #include #include #include #include #include void sig_handler(int signum)
void* sigmgr_thread(void* p)
else
}}int main()
\n");
return 0;
}
測試結果:主程序會自己結束
訊號量 二值訊號量
訊號量 二值訊號量 訊號量是作業系統的重要部分,訊號量一般用來進行資源管理和任務同步。freertos中訊號量分為二值訊號量 互斥訊號量 計數訊號量和遞迴互斥訊號量,應用場景各不同。二值訊號量通常用於互斥訪問或同步,二值訊號量和互斥訊號量非常相似,但互斥訊號量有優先順序,二值訊號量沒有。因此二值訊號...
python訊號量 Python訊號量
python訊號量教程 訊號量是由作業系統管理的一種抽象資料型別,用於在多執行緒中同步對共享資源的使用。本質上說,訊號量是乙個內部資料,用於標明當前的共享資源可以有多少併發讀取。也可以簡單的理解為,訊號量是多把鎖,同時允許多個執行緒來更改資料,而 python訊號量與互斥鎖的關係 訊號量的乙個特殊用...
訊號 訊號量
訊號是由 系統或者程序傳送給目標程序的資訊,以通知目標程序某個狀態的改變或系統異常。linux訊號可以由如下條件產生 1 對於前台程序,使用者可以通過輸入特殊的終端字元來給它傳送訊號。比如輸入ctrl c通常或給程序傳送乙個中斷訊號 2 系統異常。比如浮點異常和非法記憶體段訪問。3 系統狀態變化 4...