Menggunakan STL untuk melaksanakan pengaturcaraan berbilang benang dalam C++ melibatkan: menggunakan std::thread untuk mencipta benang. Lindungi sumber kongsi menggunakan std::mutex dan std::lock_guard. Gunakan std::condition_variable untuk menyelaraskan keadaan antara urutan. Kaedah ini menyokong tugas serentak seperti penyalinan fail, di mana berbilang benang memproses blok fail secara selari.
Cara menggunakan STL untuk melaksanakan pengaturcaraan berbilang benang dalam C++
STL (Perpustakaan Templat Standard) menyediakan satu set primitif dan bekas konkurensi yang berkuasa untuk C++ yang boleh melaksanakan pengaturcaraan berbilang benang dengan mudah. Artikel ini menunjukkan cara menggunakan komponen utama dalam STL untuk mencipta aplikasi berbilang benang.
Menggunakan Benang
Untuk mencipta utas, gunakan kelas std::thread
: std::thread
类:
std::thread t1(some_function); t1.join(); // 等待线程完成
some_function
是要并发执行的函数。
互斥量和锁
互斥量可用于防止多个线程同时访问共享资源。使用 std::mutex
:
std::mutex m; { std::lock_guard<std::mutex> lock(m); // 在此处访问共享资源 } // 解除 m 的锁定
条件变量
条件变量允许线程等待特定条件,例如当共享资源可用时。使用 std::condition_variable
std::condition_variable cv; std::unique_lock<std::mutex> lock(m); cv.wait(lock); // 等待 cv 信号 cv.notify_one(); // 唤醒一个等待线程
some_function
ialah fungsi yang akan dilaksanakan secara serentak. Mutexes dan Locks
Mutexes boleh digunakan untuk menghalang berbilang benang daripada mengakses sumber kongsi pada masa yang sama. Menggunakanstd::mutex
: 🎜#include <fstream> #include <iostream> #include <thread> #include <vector> void copy_file(const std::string& src, const std::string& dst) { std::ifstream infile(src); std::ofstream outfile(dst); outfile << infile.rdbuf(); } int main() { std::vector<std::thread> threads; const int num_threads = 4; // 创建线程池 for (int i = 0; i < num_threads; ++i) { threads.emplace_back(copy_file, "input.txt", "output" + std::to_string(i) + ".txt"); } // 等待所有线程完成 for (auto& t : threads) { t.join(); } std::cout << "Files copied successfully!" << std::endl; return 0; }
std::condition_variable
: 🎜rrreee🎜🎜Kes praktikal: salinan fail berbilang benang🎜🎜🎜Kod berikut menunjukkan cara menggunakan STL untuk melaksanakan salinan fail berbilang benang:🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk melaksanakan pengaturcaraan berbilang benang dalam C++ menggunakan STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!