C++11 부터 Thread 관련한 기본 함수를 제공
- 스레드 관련 "4개의 함수를 제공"하는 namespace
- <thread> 헤더를 선언
1. std::this_thread::get_id()
std::thread::id get_id() noexcept;
- 현재 쓰레드의 ID 반환
- 반환값이 정수가 아니라 std::thread::id라는 구조체
std::thread::id
- cout으로 출력가능하고, 비교연산
- 정수로 변환 안됨.
- std::hash<std::thread::id> 함수객체가 제공되므로 unordered 컨테이너에 키 값으로 사용 가능
2. std::this_thread::sleep_for, std::this_thread::sleep_until()
std::this_thread::sleep_for() : 주어진 시간만큼 현재 스레드 멈추기
- 인자로 std::chrono::duration이 주어져야함
std::this_thread::sleep_until() : 주어진 시간까지 현재 스레드 멈추기
- 인자로 std::chrono::time_point이 주어져야함
#include <iostream>
#include <thread>
#include <chrono>
using namespace std::literals;
int main(){
std::this_thread::sleep_for(std::chrono::seconds(3));
std::this_thread::sleep_for(3s); // 3ms, 3ns, 3min
std::chrono::time_point tp1 = std::chrono::steady_clock::now();
std::this_thread::sleep_until(tp1 + 2000ms);
}
3. std::this_thread::yield()
void yield() noexcept;
- 다른 스레드에 실행흐름을 양보함
728x90
'Language > C++' 카테고리의 다른 글
[C++] std::thread (0) | 2023.09.01 |
---|---|
[C++] std::chrono (0) | 2023.09.01 |
[C++] 난수 생성하기 (0) | 2023.07.21 |
[C++] vector<pair<int, vector>> 일때 push 하는 방법. (0) | 2022.06.08 |
[c++] cin, cout 속도 향상하기 (0) | 2021.10.03 |
댓글