[英]C multithreading: What is the advantage of a Read Lock (pthread_rwlock_rdlock) if all threads can access it simultaneously?
我對這個線程問題不感興趣:\\
我想,寫鎖定的行為就像一個while
是等待一個全局變量的確認。 喜歡:
/* pthread_rwlock_wrlock */
while (is_blocked) {
/* waiting */
}
is_blocked = true;
(writing code...)
/* pthread_rwlock_unlock */
is_blocked = false;
那是對的嗎? 以及讀鎖如何工作? 如果是共享的,為什么要使用?
信息:
pthread_rwlock_rdlock()–獲取共享的讀取鎖
pthread_rwlock_wrlock()–獲得排他的寫鎖
讀取鎖定的目的是阻止寫入程序。
都沒有一個簡單的實現,您建議的實現
例如具有競爭條件,有時會失敗。
讀取受保護的資源時,您不希望在讀取資源時對其進行更改。
讀鎖阻止寫鎖!
這意味着在您擁有讀鎖的同時,試圖獲得寫鎖的某人將不得不等到您以及擁有讀鎖的其他任何人完成讀操作。 由於閱讀不會改變資源,因此可以讓多個閱讀器同時閱讀。
請注意,在此上下文中,讀取操作的定義是任何不會更改受保護資源狀態的操作。 因此,出於讀/寫鎖定的目的,如果受保護的資源是流(例如stdin
或套接字),則從該資源進行讀取將更改其狀態,因此需要寫鎖定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.