Dalam C++, menggunakan fungsi mutex boleh menyelesaikan masalah kebuntuan dalam pengaturcaraan serentak berbilang benang. Langkah-langkah khusus adalah seperti berikut: buat mutex apabila benang perlu mengakses pembolehubah yang dikongsi, dapatkan mutex ubah suai pembolehubah yang dikongsi; Ini memastikan bahawa hanya satu utas mengakses pembolehubah yang dikongsi pada bila-bila masa, dengan berkesan menghalang kebuntuan.
Gunakan fungsi C++ untuk menyelesaikan masalah kebuntuan dalam pengaturcaraan serentak
Dalam pengaturcaraan selari berbilang benang, kebuntuan adalah masalah biasa apabila dua atau lebih utas menunggu sumber satu sama lain akan berlaku. Berikut ialah contoh kod cara menggunakan fungsi untuk menyelesaikan masalah kebuntuan dalam C++:
#include <mutex> #include <vector> // 创建互斥量 std::mutex mtx; // 定义一个用互斥量保护的共享变量 int shared_variable = 0; // 线程处理函数 void thread_function(const int& tid) { // 获得互斥量 mtx.lock(); // 对共享变量进行修改 shared_variable++; // 释放互斥量 mtx.unlock(); } int main() { // 创建线程向量 std::vector<std::thread> threads; // 创建 4 个线程 for (int i = 0; i < 4; ++i) { threads.push_back(std::thread(thread_function, i)); } // 等待所有线程完成后再继续 for (auto& t : threads) { t.join(); } // 由于所有线程都使用相同的互斥量,避免了死锁的发生 return 0; }
Dalam contoh ini, mutex mtx digunakan untuk melindungi pembolehubah kongsi shared_variable, memastikan hanya satu utas boleh mengakses pembolehubah di bila-bila masa. Apabila thread memperoleh mutex, ia akan mempunyai akses eksklusif kepada shared_variable dan thread lain mesti menunggu mutex dikeluarkan sebelum meneruskan.
Dengan menggunakan mutex untuk menyelaraskan akses kepada sumber yang dikongsi, kami mengelak benang menunggu sumber masing-masing dikeluarkan, dengan itu berkesan menghalang kebuntuan daripada berlaku.
Atas ialah kandungan terperinci Bagaimanakah fungsi C++ menyelesaikan masalah kebuntuan dalam pengaturcaraan serentak?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!