반응형
std::this_thread
현재 쓰레드에 적용되는 도우미 함수들이 있습니다.
get_id(), sleep_for(), sleep_until(), yield()
std::this_thread::sleep_for()
최소 sleep_duration 만큼의 시간 동안 현재 쓰레드의 실행을 멈춥니다.
예제
#include <iostream>
#include <chrono>
#include <string>
#include <thread>
void PrintCurrentTime() {
// 현재 시간 출력
}
void PrintMessage(const std::string& message)
{
std::cout << "Sleep now ... ";
PrintCurrentTime();
std::this_thread::sleep_for(std::chrono::seconds(3));
std::cout << message << " ";
PrintCurrentTime();
}
int main()
{
std::thread thread(PrintMessage, "Message from a child thread.");
PrintMessage("Message from a main thread.");
thread.join();
return 0;
}
std::this_tread::yield();
sleep과 비슷하나, sleep이 쓰레드를 일시 정지 상태로 바꾸는 반면, yield는 계속 실행 대기 상태를 유지합니다.
예제
#include <iostream>
#include <chrono>
#include <string>
#include <thread>
void PrintMessage(const std::string& message, std::chrono::seconds delay)
{
auto end = std::chrono::high_resolution_clock::now() + delay;
while (std::chrono::high_resolution_clock::now() < end)
{
std::this_thread::yield();
}
std::cout << message << std::endl;
}
int main()
{
std::thread thread(PrintMessage, "Message from a child thread.", std::chrono::seconds(3));
PrintMessage("Message from a main thread.", std::chrono::seconds(2));
thread.join();
return 0;
}
반응형
'SW > C++' 카테고리의 다른 글
C++ : std::scoped_lock : 예제, 사용법, 활용법, 실수 방지 방법 (0) | 2020.03.21 |
---|---|
C++ : mutex (뮤텍스) : 예제, 사용법, 활용 방법 (0) | 2020.03.20 |
C++ : thread : 람다식 활용한 예제 : 쓰레드 리턴 값 참조 방법 (0) | 2020.03.18 |
C++ : thread : detach, joinable : 사용법, 예제, 개념 (0) | 2020.03.17 |
C++ : thread : get_id() : 사용법, 구하는 법, 예제 (0) | 2020.03.16 |