STL を使用して C++ でマルチスレッド プログラミングを実装するには、次の作業が含まれます: std::thread を使用してスレッドを作成する。 std::mutex と std::lock_guard を使用して共有リソースを保護します。 std::condition_variable を使用してスレッド間の条件を調整します。このメソッドは、複数のスレッドがファイル ブロックを並行して処理するファイル コピーなどの同時タスクをサポートします。
STL を使用して C++ でマルチスレッド プログラミングを実装する方法
STL (標準テンプレート ライブラリ) は、マルチスレッド プログラミングを簡単に実装できる C++ 用の強力な同時実行プリミティブとコンテナーのセットを提供します。この記事では、STL の主要コンポーネントを使用してマルチスレッド アプリケーションを作成する方法を説明します。
スレッドの使用
スレッドを作成するには、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
は、同時に実行される関数です。 ミューテックスとロック
ミューテックスを使用すると、複数のスレッドが共有リソースに同時にアクセスするのを防ぐことができます。std::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🎜🎜 実際のケース: マルチスレッド ファイル コピー🎜🎜🎜 次のコードは、STL を使用してマルチスレッド ファイル コピーを実装する方法を示しています:🎜rrreee以上がSTL を使用して C++ でマルチスレッド プログラミングを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。