thread 线程

线程

线程使得程序能在数个处理器核心同时执行。


thread 类

定义用于查看和管理应用程序中执行线程的对象。


要求

头文件: <thread>

命名空间: std


公共方法

名称 描述
detach 容许线程从线程句柄独立开来执行
get_id 返回线程的 id
hardware_concurrency[静态] 返回实现支持的并发线程数
join 等待线程完成其执行
joinable 检查线程是否可合并,即潜在地运行于平行环境中
native_handle 返回底层实现定义的线程句柄
swap 交换二个 thread 对象

join

阻塞当前线程,直至 *this 所标识的线程完成其执行。

*this 所标识的线程的完成同步于从 join() 的成功返回。

#include <iostream>
#include <thread>
#include <chrono>

void foo()
{
   
	// 模拟昂贵操作
	std::this_thread::sleep_for(1s);
}

void bar()
{
   
	// 模拟昂贵操作
	std::this_thread::sleep_for(1s);
}

int main()
{
   
	std::cout << "启动第一个辅助线程...\n";
	std::thread helper1(foo);

	std::cout << "启动第二个辅助线程...\n";
	std::thread helper2(bar);

	std::cout << "正在等待辅助线程完成..." << std::endl;
	helper1.join();
	helper2.join();

	std::cout << "完成!\n";
}
Output
启动第一个辅助线程…
启动第二个辅助线程…
正在等待辅助线程完成…
完成!

detach

从 thread 对象分离执行的线程,允许执行独立地持续。一旦线程退出,则释放所有分配的资源。

调用 detach 后, *this 不再占有任何线程。

#include <iostream>
#include <chrono>
#include <thread>

void independentThread()
{
   
	std::cout << "正在启动并发线程。\n";
	std::this_thread::sleep_for(2s);
	std::cout << "正在退出并发线程。\n";
}

void threadCaller()
{
   
	std::cout << "正在启动线程调用者。\n";
	std::thread t(independentThread
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值