簡體   English   中英

C多線程:如果所有線程可以同時訪問它,那么讀鎖(pthread_rwlock_rdlock)有什么優勢?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM