Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Kunci Pembaca/Penulis Mengoptimumkan Akses Serentak dalam C?

Bagaimanakah Kunci Pembaca/Penulis Mengoptimumkan Akses Serentak dalam C?

DDD
DDDasal
2024-12-04 12:55:11197semak imbas

How Can Reader/Writer Locks Optimize Concurrent Access in C  ?

Pembaca/Penulis Dikunci dalam C : Mengoptimumkan untuk Pembaca Kerap

Dalam C , mengurus akses serentak kepada data dikongsi memerlukan teknik penyegerakan yang cekap. Untuk senario dengan corak dominan pembaca kerap dan penulis jarang, kunci pembaca/penulis menawarkan penyelesaian yang optimum.

Pendekatan Standard (C 14 dan Kemudian)

Bermula dengan C 14, perpustakaan standard menyediakan kelas std::shared_mutex untuk melaksanakan kunci pembaca/penulis. Ia membenarkan berbilang utas memperoleh kunci kongsi (baca sahaja) secara serentak sambil mengehadkan pemerolehan kunci eksklusif (tulis) kepada satu utas pada satu masa. Anda boleh menggunakan coretan kod berikut untuk menyediakan kunci kongsi:

Lock myLock;
ReadLock r_lock(myLock);  // Acquire a shared (read) lock

Untuk akses tulis eksklusif, gunakan kunci unik:

WriteLock w_lock(myLock);  // Acquire an exclusive (write) lock

Pendekatan Perpustakaan Tingkatkan

Jika pangkalan kod anda menggunakan piawaian atau pengkompil C yang lebih lama, anda boleh memanfaatkan pelaksanaan perpustakaan Boost untuk kunci pembaca/penulis. Boost menyediakan kelas boost::shared_mutex, yang berfungsi sama dengan versi perpustakaan standard:

Lock myLock;
ReadLock r_lock(myLock);  // Acquire a shared (read) lock
WriteLock w_lock(myLock);  // Acquire an exclusive (write) lock

Membuka kunci

Sebaik sahaja anda menyelesaikan operasi yang dikawal oleh pembaca/ kunci penulis, ingat untuk melepaskan kunci dengan memanggil buka kunci() pada kunci objek:

r_lock.unlock();  // Release the shared (read) lock
w_lock.unlock();  // Release the exclusive (write) lock

Dengan melaksanakan kunci pembaca/penulis, anda boleh mengoptimumkan kod berbilang benang dengan berkesan untuk kes di mana operasi baca melebihi jumlah operasi tulis, memastikan akses serentak yang cekap kepada sumber dikongsi.

Atas ialah kandungan terperinci Bagaimanakah Kunci Pembaca/Penulis Mengoptimumkan Akses Serentak dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn