C++ std::this_thread知识整理

发布时间 2023-09-18 09:57:58作者: 冰山奇迹

std::this_thread::get_id()
std::this_thread::yield()
std::this_thread::sleep_for ()
std::this_thread::sleep_until ()

文章目录
前言
一、this_thread 是什么?
二、使用步骤
1.引入库
总结

前言
C++11新标准引入了四个支持多线程的文件,<atomic>、<thread>、<mutex>、<condition_variable>、<future>。

<thread>头文件主要声明了 std::thread 类,另外 std::this_thread 命名空间也在该头文件中。

 

提示:以下是本篇文章正文内容,下面案例可供参考

一、this_thread 是什么?
命名空间std::this_thread提供了一组关于当前线程的函数

二、使用步骤
1.引入库
<thread>

总结
使用this::this_thread::get_id()获取线程id:

函数原型:std::thread::id get_id() noexcept;

cout << this_thread::get_id() << endl;

thread t([] {cout << this_thread::get_id() << endl; });

t.detach();

system("pause");

 

使用std::this_thread::yield()放弃当前线程占用时间片使CPU重新调度以便其它线程执行:

函数原型:void yield() noexcept;

bool g_ready;

void waitReady() { while (!g_ready) { this_thread::yield(); } cout << "ok" << endl; }

thread t(waitReady);

t.detach();

 

使用std::this_thread::sleeo_for()阻塞当前线程一段时间:

函数原型:template< class Rep, class Period >
void sleep_for( const std::chrono::duration<Rep, Period>& sleep_duration );

this_thread::sleep_for(chrono::nanoseconds(1000));//阻塞当前线程1000纳秒

this_thread::sleep_for(chrono::microseconds(1000));//阻塞当前线程1000微妙

this_thread::sleep_for(chrono::milliseconds(1000));//阻塞当前线程1000毫秒

this_thread::sleep_for(chrono::seconds(20)+ chrono::minutes(1));//阻塞当前线程1分钟20秒

this_thread::sleep_for(chrono::hours(1));//阻塞当前线程1小时

 

使用std::this_thread::sleeo_until()阻塞当前线程直到某个时间点:

函数原型:template< class Clock, class Duration >
void sleep_until( const std::chrono::time_point<Clock,Duration>& sleep_time );

chrono::system_clock::time_point until = chrono::system_clock::now();

until += chrono::seconds(5);

this_thread::sleep_until(until);//阻塞到5秒之后
————————————————
版权声明:本文为CSDN博主「那条暗黑的狼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38515565/article/details/109473172