思路: linux多執行緒時,資料空間為公共,乙個執行緒去新增資料,乙個執行緒去修改資料,這個時候需要加入互斥鎖,倆個執行緒如果同時去處理這個資料空間,資料會出錯,除了執行緒鎖之外,學習了乙個讀寫鎖
詳細函式說明:
核心函式:
初始化讀寫鎖 pthread_rwlock_init
寫入讀寫鎖中的鎖 pthread_rwlock_wrlock(阻塞)
解除鎖定讀寫鎖 pthread_rwlock_unlock
#include #include #include #include #include #include pthread_rwlock_t rwlock = pthread_rwlock_initializer;
char tmp_buf[100] = ;
void test()
}int main()
if ((pthread_create(&fp, null, (void *)&test, null)) == -1)
while (1)
}
gcc test_time.c -lpthread -o hello
結果:
不加鎖
./hello
test : 1564587467
test : 1564587469
test : 1564587471
main : 1564587471
test : 1564587473
test : 1564587475
test : 1564587477
main : 1564587477
test : 1564587479
test : 1564587481
加鎖
./hello
main : test
test : 1564587516
main : test
test : 1564587522
main : test
test : 1564587528
linux 讀寫鎖應用例項
使用讀寫鎖實現四個執行緒讀寫一段程式的例項,共建立了四個新的執行緒,其中兩個執行緒用來讀取資料,另外兩個執行緒用來寫入資料。在任意時刻,如果有乙個執行緒在寫資料,將阻塞所有其他執行緒的任何操作。include include include include include static pthrea...
linux程序讀寫鎖
讀寫鎖比mutex有更高的適用性,可以多個執行緒同時占用讀模式的讀寫鎖,但是只能乙個執行緒占用寫模式的讀寫鎖。1.當讀寫鎖是寫加鎖狀態時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞 2.當讀寫鎖在讀加鎖狀態時,所有試圖以讀模式對它進行加鎖的執行緒都可以得到訪問權,但是以寫模式對它進行...
Linux讀寫鎖使用
讀寫鎖很早就知道了,但是使用的不多,這次 中出現了,才認真思考怎麼用。摘錄一下 讀寫鎖的特點是 當讀寫鎖是寫加鎖時,在這個鎖被解鎖之前,所有試圖對這個鎖加鎖的執行緒都會被阻塞。當讀寫鎖是讀加鎖時,在這個鎖被解鎖之前,所有試圖以讀模式對他進行加鎖的執行緒都可以得到訪問權,但是如果執行緒以寫模式對此鎖加...