Dalam pengaturcaraan berbilang benang, menggunakan kunci mutex (mutex) boleh menghalang berbilang benang daripada mengakses data kongsi pada masa yang sama, dengan itu mengelakkan persaingan dan ketidakkonsistenan data. Fungsi utama termasuk: 1. Perlindungan data yang dikongsi; 2. Penyegerakan benang. Dalam C++, objek mutex boleh dibuat dan digunakan melalui std::mutex Data kongsi hanya boleh diakses selepas memperoleh kunci, dan benang lain boleh memperoleh kunci hanya selepas kunci dilepaskan.
Peranan mutex dalam pengaturcaraan berbilang benang C++
Dalam pengaturcaraan berbilang benang, apabila berbilang rangkaian mengakses data kongsi pada masa yang sama, persaingan data dan ketidakkonsistenan mungkin berlaku. Untuk mengelakkan ini, mutex boleh digunakan untuk memastikan data yang dikongsi hanya diakses oleh satu utas pada masa yang sama.
Apakah itu mutex
Mutex ialah primitif penyegerakan yang membolehkan urutan mempunyai akses eksklusif bersama kepada sumber yang dikongsi. Selepas benang memperoleh kunci mutex, benang lain tidak boleh memperoleh kunci sehingga benang melepaskan kunci.
Peranan mutex
Dalam pengaturcaraan berbilang benang, mutex terutamanya mempunyai fungsi berikut:
Cara menggunakan mutex
Dalam C++, anda boleh menggunakan std::mutex
untuk mencipta dan menggunakan objek mutex: std::mutex
来创建和使用 mutex 对象:
// 创建一个 mutex 对象 std::mutex m; // 获取 mutex 的锁 m.lock(); // 访问共享数据或执行操作 // 释放 mutex 的锁 m.unlock();
实战案例
下面是一个使用 mutex 保护共享数据的实战案例:
#include <iostream> #include <thread> #include <mutex> std::mutex m; int shared_data = 0; void increment_shared_data() { m.lock(); shared_data++; m.unlock(); } int main() { std::thread t1(increment_shared_data); std::thread t2(increment_shared_data); t1.join(); t2.join(); std::cout << "Final value of shared_data: " << shared_data << std::endl; return 0; }
在这个案例中,两个线程同时执行 increment_shared_data()
函数来对 shared_data
进行自增操作。由于 increment_shared_data()
函数中使用了一个 mutex 来保护共享数据,因此保证了两个线程不会同时访问 shared_data
rrreee
increment_shared_data()
pada masa yang sama untuk melaksanakan operasi autoincree pada shared_data
. Memandangkan mutex digunakan dalam fungsi increment_shared_data()
untuk melindungi data kongsi, adalah dijamin bahawa dua urutan tidak akan mengakses shared_data
pada masa yang sama, dengan itu mengelakkan persaingan data. 🎜Atas ialah kandungan terperinci Apakah peranan mutex dalam pengaturcaraan berbilang benang C++?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!