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

可变参数应用(C++并发编程中的joining_thread代码)

代码:

#include "X:\Work\Share\CCode\CPlatform\Base\global_c_all.h" 
using namespace lf;
using namespace std;
 
class joining_thread
{
	std::thread t;
public:
	joining_thread() noexcept = default;

	template<typename Callable, typename ... Args>
	explicit joining_thread(Callable&& func, Args&& ... args) :
		t(std::forward<Callable>(func), std::forward<Args>(args)...)
	{

	}

	explicit joining_thread(std::thread t_) noexcept :
		t(std::move(t_))
	{

	}

	joining_thread(joining_thread&& other) noexcept :
		t(std::move(other.t))
	{

	}

	joining_thread& operator=(joining_thread&& other) noexcept
	{
		if (joinable())
			join();
		t = std::move(other.t);
		return *this;
	}
	~joining_thread() noexcept
	{
		if (joinable())
			join();
	}

	void swap(joining_thread& other)noexcept
	{
		t.swap(other.t);
	}


	std::thread::id get_id() const noexcept {
		return t.get_id();
	}

	bool joinable() const noexcept
	{
		return t.joinable();
	}

	void join()
	{
		t.join();
	}

	void detach()
	{
		t.detach();
	}

	std::thread& as_thread() noexcept
	{
		return t;
	}

	const std::thread& as_thread() const noexcept
	{
		return t;
	}
};


int main()
{

	joining_thread t(std::thread([]() {
		_cout << _t("执行线程代码。");
		}));

	//t.join();

	return 0;
}
 

输出:

http://www.dtcms.com/a/6086.html

相关文章:

  • 解决Android AAPT: error: resource android:attr/lStar not found. 问题
  • CMake入门教程【基础篇】列表操作(list)
  • 超简单|配图详细| 双系统Ubuntu22.04 系统磁盘扩容
  • 旅游平台网页前后端
  • Selenium教程04:鼠标+键盘网页的模拟操作
  • 基于SpringBoot的物流管理系统
  • linux系统shell流文本处理工具——awk
  • 使用IDEA官方docker插件构建镜像
  • 速学python·注释
  • openssl 命令详解
  • MySQL的CRUD操作函数介绍union和union all
  • 2023年终总结
  • Elasticsearch:使用 ELSER v2 文本扩展进行语义搜索
  • RoadMap8:C++中类的封装、继承、多态与构造函数
  • 宣传照(私密)勿转发
  • 使用.Net nanoFramework为ESP32进行蓝牙配网
  • Django 文件上传(十二)
  • prometheus grafana mysql监控配置使用
  • 【JAVA】泛型和Object的区别
  • 深入了解Swagger注解:@ApiModel和@ApiModelProperty实用指南
  • 外包干了3个月,技术退步明显.......
  • 使用 dbgate 在 sealos 上完美管理 mysql pgsql 等数据库
  • 14:00面试,14:08就出来了,问的问题过于变态了。。。
  • Mybatis行为配置之Ⅰ—缓存
  • Linux系统安装MySQL
  • 泛型擦除到底是怎么一回事
  • 福建科立讯通信 指挥调度管理平台 多处文件上传漏洞复现
  • Huffman树实现文件压缩
  • 【Bootstrap学习 day2】
  • CAAC无人机操作证考证报名流程及白底证件照片制作方法