
Thread的主要数据成员为_Thr

里面存储的是线程句柄和线程ID


先看看赋值运算符的移动构造

最开始判断线程的ID是否不为0

_STD就是使用std的域

如果线程ID不为0,那么就抛出异常

这里_New_val使用了完美转发,交换_Val和_New_val的值
_Thr = _STD exchange(_Other._Thr, {});
这里应该是把_Other._Thr的值赋值给_Thr,然后将_Other._Thr的值置空
最后返回线程本身

第一个判断我们已经看了,就是判断_Thr_Id != 0
如果_Thr_Id == 0了,则抛出异常
第二个我看了_Thrd_id()其实就是一个unsigned int,但是具体是什么我不知道,ID出问题了会抛出异常吧
第三个,是线程启动不成功,则抛出异常

主要这里是_Thrd_detach的调用,使得线程分离

这里也用了完美转发,也是Thread的构造函数
enable_if_t:


这里必须要模板参数为整形才能调用isInt

参考文章:C++(11):enable_if_t-CSDN博客


std::is_same_v:判断输入的类型是否是指定的模板类型

_Start函数内,就把函数和参数信息给到了_Thr._Hnd线程句柄上去了

定义类,还可以这么去玩