企业网站开发报价单,自建团队网站开发要多少钱,优化设计电子版,wordpress 刷新 linkThread的主要数据成员为_Thr 里面存储的是线程句柄和线程ID 先看看赋值运算符的移动构造 最开始判断线程的ID是否不为0 _STD就是使用std的域 如果线程ID不为0#xff0c;那么就抛出异常 这里_New_val使用了完美转发#xff0c;交换_Val和_New_val的值
_Thr _STD exchange(_…
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线程句柄上去了 定义类还可以这么去玩