C 中的讀取/寫入鎖定:針對頻繁讀者進行最佳化
在C 中,管理對共享資料的並發存取需要高效能的同步技術。對於頻繁讀取和不頻繁寫入的主導模式的場景,讀取器/寫入器鎖定提供了最佳解決方案。
標準方法(C 14 及更高版本)
從C 14,標準庫提供了 std::shared_mutex 類別來實現讀取/寫入鎖定。它允許多個執行緒同時取得共享(只讀)鎖,同時將獨佔(寫入)鎖的取得限制為一次只能由一個執行緒取得。您可以使用以下程式碼片段來設定共享鎖定:
Lock myLock; ReadLock r_lock(myLock); // Acquire a shared (read) lock
對於獨佔寫入訪問,請使用唯一鎖定:
WriteLock w_lock(myLock); // Acquire an exclusive (write) lock
Boost Library Approach
如果您的程式碼庫使用較舊的C 標準或編譯器,您可以利用Boost庫的讀/寫鎖實作。 Boost 提供了 boost::shared_mutex 類,其工作方式與標準庫版本類似:
Lock myLock; ReadLock r_lock(myLock); // Acquire a shared (read) lock WriteLock w_lock(myLock); // Acquire an exclusive (write) lock
解鎖
一旦完成由讀卡器保護的操作/ writer鎖,記得透過呼叫鎖定物件上的unlock()來釋放鎖定:
r_lock.unlock(); // Release the shared (read) lock w_lock.unlock(); // Release the exclusive (write) lock
By實作讀寫鎖,可以針對讀取操作多於寫入操作的情況,有效優化多執行緒程式碼,保證共享資源的高效並發存取。
以上是讀/寫鎖如何優化 C 中的並發存取?的詳細內容。更多資訊請關注PHP中文網其他相關文章!