C++/Library 2021. 3. 30. 00:03

멀티쓰레딩 (Multithreading)

  • <thread> 라이브러리

  • 병렬 프로그래밍을 위한 라이브러리이다.

  • 쓰레드를 생성하여 다른 코어에서 작업할 수 있도록 한다.


예제

  • CPU 사용률 100% 찍어보기

    • 출력이 섞여서 나오는 현상(레이스 컨디션)이 발생한다. 이는 mutexatomic, 세마포어 등으로 해결할 수 있다.
    #include <iostream>
    #include <string>
    #include <thread>
    #include <vector>
    
    int         main()
    {
        using namespace std;
    
        const int num_logical_processors = std::thread::hardware_concurrency();
    
        cout << "Number of processors : " << num_logical_processors << endl;
        cout << "ID of this thread : " << std::this_thread::get_id() << endl;
    
        vector<thread>  threads;
        threads.resize(num_logical_processors);
    
        for (auto& e : threads)
            e = thread([]() {
            cout << std::this_thread::get_id() << endl;
            while (true) {}});
    
        for (auto& e : threads)
            e.join();
    }
    
    /* stdout stderr
    Number of processors : 12
    ID of this thread : 16588
    13524
    14792
    17928
    18368
    17452
    14392
    19440
    12996
    16180
    1773614800
    18504
    */

'C++ > Library' 카테고리의 다른 글

C++ forward  (0) 2021.03.30
C++ future  (0) 2021.03.30
C++ atomic  (0) 2021.03.30
C++ mutex  (0) 2021.03.30
C++ 파일 임의 위치 접근  (0) 2021.03.29