STL을 사용하여 C++에서 멀티스레드 프로그래밍을 구현하는 방법은 무엇입니까?
Jun 05, 2024 am 11:54 AMSTL을 사용하여 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











다중 스레드 프로그래밍에 C++ 람다 식을 사용하면 어떤 이점이 있나요?

C++ STL에서 사용자 정의 비교기를 구현하는 방법은 무엇입니까?

C++ 다중 스레드 프로그래밍에서 읽기-쓰기 잠금의 목적은 무엇입니까?

코드 재사용성을 향상시키기 위해 사용자 정의 STL 함수 개체를 디자인하는 방법은 무엇입니까?

Actor 모델을 기반으로 C++ 다중 스레드 프로그래밍을 구현하는 방법은 무엇입니까?
