LINUX下的執行緒同步 mutex和讀寫鎖

2021-05-23 00:16:22 字數 547 閱讀 2393

用mutex保護的**段,無論讀寫,乙個執行緒占有時,別的執行緒都必須等待。

讀寫鎖可以使多個執行緒同時讀取,具體說來如下:

當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞。

當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權,但是如果執行緒希望以寫模式對此鎖進行加鎖,它必須阻塞直到所有的執行緒釋放鎖。

通常,當讀寫鎖處於讀模式鎖住狀態時,如果有另外執行緒試圖以寫模式加鎖,讀寫鎖通常會阻塞隨後的讀模式鎖請求,這樣可以避免讀模式鎖長期占用,而等待的寫模式鎖請求長期阻塞。

pthread_mutex_init

pthread_mutex_destroy

pthread_mutex_lock

pthread_mutex_unlock

pthread_rwlock_init

pthread_rwlock_destroy

pthread_rwlock_rdlock

pthread_rwlock_wrlock

pthread_rwlock_unlock

linux 執行緒 執行緒同步

因為執行緒獨自擁有的只有棧,其他的區域執行緒共同擁有。並且對共享區域的操作並不都是原子的。對共享區域的操作順序又是不確定的。就像建立兩個檔案描述符同時指向 同一檔案,並且連續向檔案中寫入那麼寫的東西可能是亂七八糟的。這時就需要執行緒對共享區的同步。而另一種情況是,多個執行緒的指令執行順序需要同步。這...

Linux下C的執行緒同步機制

c裡提供了保證執行緒安全性的三種方法 新增標頭檔案 include,pthread 庫不是 linux 系統預設的庫,連線時需要使用靜態庫 libpthread.a,在編譯中要加 lpthread引數 通過鎖的機制實現執行緒間的互斥,同一時刻只有乙個執行緒可以鎖定它,當乙個鎖被某個執行緒鎖定的時候,...

Linux下C的執行緒同步機制

c裡提供了保證執行緒安全性的三種方法 新增標頭檔案 include,pthread 庫不是 linux 系統預設的庫,連線時需要使用靜態庫 libpthread.a,在編譯中要加 lpthread引數 通過鎖的機制實現執行緒間的互斥,同一時刻只有乙個執行緒可以鎖定它,當乙個鎖被某個執行緒鎖定的時候,...