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 중국어 웹사이트의 기타 관련 기사를 참조하세요!