本文主要解释“为什么GSL gsl:joining_thread比C中的std:thread好”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学会“为什么GSL gsl:joining_thread比C中的std:thread好”!
CP.25: gsl::joining_thread好于std::thread
Reason(原因)
Joining _ thread是一个与作用域链接的线程。分离的线程很难监控。很难保证分离后的线程没有错误(或者有分离的潜在可能)。
Example, bad(反面示例)
void f(){ STD : cout ' Hello ';}
结构F {
void运算符()()const { STD :3360 cout ' parallel world ';}
};
int main()
{
STD : thread t1 { f };//f()在单独的线程中执行
STD : thread T2 { F()};//F()()在单独的线程中执行
} //找出bug
Example(示例)
void f(){ STD : cout ' Hello ';}
结构F {
void运算符()()const { STD :3360 cout ' parallel world ';}
};
int main()
{
STD : thread t1 { f };//f()在单独的线程中执行
STD : thread T2 { F()};//F()()在单独的线程中执行
t1 . join();
T2 . join();
} //留下一个坏错误
Note(注意)
制作“不朽线程”全局,将它们放在一个封闭范围内,或者将它们放在自由存储上,而不是分离()。别说了。
将“始终有效的线程”定义为全局的,将它们限制在一个封闭的范围内,或者将它们放在自由存储中,而不是将它们分开。不要分离螺纹。
Note(注意)
由于使用std:thread的旧代码和第三方库,这个规则可能很难引入。
因为std:thread被旧代码和第三方库使用,所以很难推广这个指南。
Enforcement(实施建议)
标志使用ofstd:thread:
标有std:thread的代码:
建议使用ofgsl:joining _ threador或C 20std:jthread。
建议使用GSL gsl:joining_thread或者C 20推出的std:jthread。
如果分离,建议将所有权“导出”到封闭范围。
如果需要分离线程,建议将所有权“输出”到一个封闭的范围。
如果线程是连接还是分离不明显,则发出警告。
如果很难判断线程是会连接还是会分离,就报警。
至此,相信大家对“为什么GSL gsl:joining_thread比C中的std:thread好”有了更深的理解,那我们就来做点什么吧!这是网站。更多相关内容,可以去相关渠道查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116972.html