程序執行緒之間的通訊共享資料在現實的應用中可以說是不可避免的,那麼如何保證他們之間在使用同乙個資料的時候能夠有序,不出問題,這個就是同步機制要解決的問題,老師經常說程式設計到最後有很多哲學的問題,仔細想來也確實可以這麼說,哈哈,其實哲學就是事物的道理嗎,我們都多多少少是跟哲學沾邊的。
同步的機制主要有四種:臨界區,互斥量,訊號量和事件,下面分述之,首先說明,這些內容有些是網上看到別人的資料,有些是自己的總結,主要是自己留存備用
1. 臨界區:critical section
用於執行緒間同步,多個執行緒同時訪問乙個資源時,首先進入這個臨界區的獲取使用權,其它排隊,知道當前使用的執行緒釋放臨界區
2. 互斥量:mutex
可以用於程序和執行緒間同步,功能與臨界區類似
3. 訊號量:semaphores
可用於程序和執行緒間同步,它與臨界區與互斥量的不同在於可以對資源的控制不是獨享,而是可以同時使用的,它控制的是數目。
就像經典的生產者消費者模型
生產者在放貨前需要知道還有多少個貨物能往裡放。
消費者在拿貨前需要知道有多少個貨物能往外拿。
生產者往裡放貨的時候要更新可以放貨的數量以及可以拿貨的數量。
消費者拿貨的時候也要更新這兩個數量。
4. 事件:event
事件是用來在程序和執行緒間同步的。就像我們人之間的交流。我把一件事做完了,告訴別人,別人收到這個訊息才能接著往下做。或者他還要等第三個人把事情做完才能開 始做他的事。
互斥量、訊號量、事件用於程序間同步的功能還需要寫程式驗證一下。
訊號量的使用還需要練習。
程序 執行緒間同步機制。
一 程序 執行緒間同步機制。臨界區 互斥區 事件 訊號量四種方式 臨界區 critical section 互斥量 mutex 訊號量 semaphore 事件 event 的區別 1 臨界區 通過對多執行緒的序列化來訪問公共資源或一段 速度快,適合控制資料訪問。在任意時刻只允許乙個執行緒對共享資源...
執行緒同步機制
本週主要學習 執行緒同步機制 互斥量 讀寫鎖和條件變數 和簡單程式的實現,對執行緒同步有了進一步認識 內容如下 執行緒的基本概念,相關函式 互斥量 說明 處於標圓形框之上的線段表示相關的執行緒沒有擁有互斥量 處於圓形框中心線之上的線段表示相關的執行緒等待互斥量 處於圓形框中心線之下的線段表示相關的執...
執行緒同步機制
執行緒同步主要用於協調對臨界資源的訪問,臨界資源可以是硬體裝置 比如印表機 磁碟 檔案 記憶體 變數 陣列 佇列等 執行緒同步有4種機制 他們的主要區別在於 各同步機制詳細的功能說明如下 臨界區臨界區是一段獨佔對某些共享資源訪問的 在任意時刻只允許乙個執行緒對共享資源進行訪問。如果有多個執行緒試圖同...