本文主要介绍“C如何正确使用线程”。在日常操作中,相信很多人对C如何正确使用线程有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“C如何正确使用线程”的疑惑!接下来,请和边肖一起学习!
CP.26:不要分离线程
00-1010一般来说,生命周期超过创建它的线程的线程的需求是从线程任务继承而来的,但是通过分离来实现这一思想使得监视和与分离线程通信变得更加困难。在特殊情况下,很难(虽然不是不可能)确保线程能够按预期停止或继续运行。
Example(示例)
void heart beat();
无效使用()
{
std:thread t(心跳);//不加入;心跳意味着永远运行
t . detach();
//.
}这段代码是对线程的合理使用,其中通常使用detach()。虽然这种做法有问题。我们如何监控一个分离的线程来知道它是否是活动的?心跳可能有一些问题,对于需要心跳功能的系统来说,失去心跳是一个严重的问题。因此,我们需要与心跳线程通信(例如,通过信息流或使用condition_variable的通知事件)。
另一种通常更好的解决方案是通过将它放在创建(或激活)点之外的范围内来控制它的生命周期。例如:
另一种通常更高级的方法是将其放在创建(或激活)它的范围之外。示例:
void heart beat();
gsl:joining_thread t(心跳);//心跳意味着“永远”运行该心跳将(除非错误、硬件问题等。)只要程序运行,就运行。
心跳线程将运行与程序一样长的时间(除非有错误、硬件问题等)。).
有时候,我们需要把创造的点和所有权的点分开
有时候,我们需要把世代观点和所有制观点分开。
void heart beat();
unique _ ptrgsl : joining _ thread tick _ tock { nullptr };
无效使用()
{
//只要滴答还活着,心跳就应该运行
tick _ tock=make _ uniquegsl : joining _ thread(心跳);
//.
}
Reason(原因)
Flagdetach()。
标记分离操作。
至此,“如何在C语言中正确使用线程”的研究结束,希望能解决大家的疑惑。理论和实践的结合可以帮助你学得更好。去试试吧!如果你想继续学习更多的相关知识,请继续关注网站,边肖会继续努力,给大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/116973.html