C++标准库笔记-多线程-this_thread命名空间

this_thread

针对任何线程(包括主线程main thread),声明了一个命名空间std::this_thread,用以提供线程专属全局函数;

接口

操作 效果
this_thread::get_id() 获取当前线程的ID
this_thread::sleep_for(dur) 将某个线程阻塞dur时间段
this_thread::sleep_until(tp) 将某个线程阻塞直到时间点 tp
this_thread::yield() 建议释放控制以便重新调度(reschedule),让下一个线程能够运行

注意:当处理系统时间调整时,sleep_for()和sleep_until()往往不同;
函数this_thread::yield()用来告诉系统,放弃当前线程的时间片的剩余时间,可以尽快使运行环境得以重新调度以便其他线程执行;“放弃控制”的一个典型例子是,当等待和轮询(wait or poll)另一线程或等待或轮询“某个atomic flag被另一线程设定”时:

while(!readyFlag)
{
	std::this_thread::yeild();
}

另外一个例子是,当你尝试锁定多个lock/mutex却无法取得其中一个lock或mutex,那么在尝试不同次序的lock/mutex之前你可以使用yield(),这会让程序更快;

引用

1.《C++标准库》

你可能感兴趣的:(C++)