본문 바로가기
Language/C++

[C++] std::this_thread

by 어발 2023. 9. 1.
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

댓글