当前位置: 首页 > news >正文

一学一做看视频网站有哪些内容网站建设微信公众号文章

一学一做看视频网站有哪些内容,网站建设微信公众号文章,泉州公司网站模板建站,网站如何接入支付宝std::this_thread 是 C 标准库中提供的一个命名空间,它包含了与当前线程相关的功能。这个命名空间提供了许多与线程操作相关的工具,使得在多线程环境中更容易进行编程。 源码类似于如下: namespace std{namespace this_thread{//...........…

std::this_thread 是 C++ 标准库中提供的一个命名空间,它包含了与当前线程相关的功能。这个命名空间提供了许多与线程操作相关的工具,使得在多线程环境中更容易进行编程。
源码类似于如下:

namespace std{namespace this_thread{//...................} 
}

在这里插入图片描述

get_id( )

get_id( )
std::this_thread::get_id(): 返回当前线程的唯一标识符,类型为 std::thread::id。可以用来识别不同的线程。

两种方法获取线程ID

方法一: 利用线程名中的API接口获取(推荐)

void myFunction(){}
int main()
{;std::thread myThread(myFunction);std::thread::id myThreadId = myThread.get_id();cout <<  "myThreadId: " <<  myThreadId << endl;myThread.join();
}

在这里插入图片描述

方法二: 在线程函数中利用this_thread返回当前线程的ID

void myFunction(){// 获取当前线程的IDstd::thread::id threadId = std::this_thread::get_id();std::cout << "Thread ID inside myFunction: " << threadId << std::endl;
};int main()
{// 创建线程std::thread myThread(myFunction);//等待线程执行完成myThread.join();// 获取当前主线程的IDstd::thread::id mainThreadId = std::this_thread::get_id();std::cout << "Main Thread ID: " << mainThreadId << std::endl;
}

在这里插入图片描述

yield( )

std::this_thread::yield() 是 C++ 标准库中的一个函数,它的作用是让当前线程放弃其执行权,主动让出 CPU 时间片,以便其他线程有机会执行。具体来说,yield() 函数的调用会导致当前线程进入就绪态,允许调度器在就绪线程中选择另一个线程来执行。

这个函数的原型如下:

namespace std {namespace this_thread {void yield() noexcept;}
}

使用 yield() 的主要场景是在多线程编程中,当一个线程希望让出 CPU 执行权,以便其他线程能够执行。这样可以更好地利用系统资源,提高多线程程序的效率。以下是一个简单的示例,演示了 yield() 的基本用法:

#include <iostream>
#include <thread>
void worker() {for (int i = 0; i < 5; ++i) {std::cout << "Worker: " << i << std::endl;std::this_thread::yield(); // 让出执行权}
}int main() {std::thread workerThread(worker);for (int i = 0; i < 5; ++i) {std::cout << "Main: " << i << std::endl;std::this_thread::yield(); // 让出执行权}workerThread.join();return 0;
}

sleep_for()

std::this_thread::sleep_for(): 让当前线程休眠一段指定的时间。

#include <iostream>
#include <chrono>
int main() {std::cout << "Sleep for 2 seconds...\n";std::this_thread::sleep_for(std::chrono::seconds(2));std::cout << "Awake!\n";return 0;
}

在这里插入图片描述
std::chrono是C++11提供的时间库(更具体说它也是一个命名空间,它的库头文件名和命名空间名称相同)。库中的核心组件是持续时间(duration),它是时间段的表示。持续时间可以以秒、毫秒、微秒等不同单位表示。例如,std::chrono::seconds表示以秒为单位的时间段,而std::chrono::milliseconds和std::chrono::microseconds分别表示毫秒和微秒。
原型如下:

namespace std {namespace chrono{..............}
}

std是一级命名空间,chrono是二级命名空间。

sleep_until( )

std::this_thread::sleep_until() 用于让当前线程休眠直到指定的时间点。该函数接受一个表示时间点的参数,并在当前线程休眠直到达到或超过该时间点。使用 sleep_until() 可以在程序中实现对时间的精确控制。
以下是 sleep_until() 函数的原型:

namespace std {namespace this_thread {template<class Clock, class Duration>void sleep_until(const chrono::time_point<Clock, Duration>& sleep_time);}
}

sleep_until() 接受一个时间点参数,其中 Clock 表示时钟类型,Duration 表示时间间隔类型。通常,ClockDuration 会使用 std::chrono 命名空间中的类型。

下面是一个示例,演示如何使用 sleep_until() 将当前线程休眠至指定时间点:

在这个例子中,sleep_until() 被用来休眠当前线程至指定的时间点。首先获取了当前时间点 now,然后计算了一个未来的时间点 sleep_time(当前时间点之后的5秒),最后通过 sleep_until() 函数实现线程的休眠。

#include <iostream>
#include <thread>
#include <chrono>
int main() {// 获取当前时间点auto now = std::chrono::system_clock::now();// 设置休眠时间为当前时间点之后的5秒auto sleep_time = now + std::chrono::seconds(5);std::cout << "Sleeping until: " << std::chrono::system_clock::to_time_t(sleep_time) << std::endl;// 休眠至指定时间点std::this_thread::sleep_until(sleep_time);std::cout << "Awake!" << std::endl;return 0;
}

打印输出:
在这里插入图片描述

std::chrono::system_clock::to_time_t(sleep_time):将时间点转为时间戳(距离1970年1月1日零时零分零秒的间隔秒数)

http://www.yayakq.cn/news/42574/

相关文章:

  • 资源seo网站优化排名网络服务公司注册官网
  • 黑龙江建设网安全员考试报名搜索引擎优化的技巧
  • 单位做网站费用怎么记账wordpress 首页描述
  • 展示型网站包含哪些模块涟源网站建设
  • 瑞安网站建设成都古怪科技网站建设公司
  • 怎么用ps做网站首页背景图片正能量网站免费入口不用下载
  • 那里可以做工作室做网站静态网页设计报告
  • 做五金生意什么网站做比较好金坛区住房城乡建设局网站
  • 许昌网站优化html网页搭建
  • 提供网站建设工具的品牌三网合一网站建设方案
  • 企业品牌网站建设价格网站开发前端兼职
  • 做网站的搜索引擎彩票网站维护会跑路吗
  • 店铺推广方案怎么写seo课程培训要多少钱
  • 沈阳网站建设小工作室怎样营销能有效获取客户
  • 做网站主播要什么条件网站托管服务怎么收费
  • 京东网站建设策划书高端网站建设高端网站建设专家
  • 我有网站 怎么做淘宝推广做网站一般按什么报价
  • 天津做网站设计公司人力资源网站开发说明书
  • 网站建设合同交印花税么网站一般用什么架构
  • 南京建设企业网站黑马网站建设
  • 网站开发人员的前景wordpress建站 博客
  • 小白学做搭建网站房产资讯什么网站做的好
  • 电脑买编程代码做网站酒店的网络营销是什么
  • 福州建设人才网站合肥制作网页设计
  • 做网站详细教程汽车之家电脑网页版
  • 太原企业网站制作百度域名查询
  • 中国建设银行假网站网页版传奇工作室
  • 建设一个旅游电子商务网站php语言网站开发公司北京
  • 网站备案多个域名网站优化推广软件
  • 贡嘎网站建设上海网络推广专员招聘