首页 > 其他分享 >特殊情况下的等待

特殊情况下的等待

时间:2024-03-24 20:57:58浏览次数:211  
标签:std 特殊 join thread some 线程 func 情况 等待

 当倾向于在无异常的情况下使用join()时, 需要在异常处理过程中调用join(), 从而避免生命周期的问题。  

struct func; // 定义在清单2.1中
void f()
{
    int some_local_state=0;
    func my_func(some_local_state);
    std::thread t(my_func);
    try
    {
        do_something_in_current_thread();
    } 
    catch(...)
    {
        t.join(); // 1
        throw;
    } 
    t.join(); // 2
}

如果不想等待线程结束, 可以分离(detaching)线程, 从而避免异常安全(exception-safety)问题。 不过, 这就打破了线程与 std::thread 对象的联系, 即使线程仍然在后台运行着, 分离操作也能确保 std::terminate() 在std::thread 对象销毁才被调用。 

标签:std,特殊,join,thread,some,线程,func,情况,等待
From: https://www.cnblogs.com/love-9/p/18093000

相关文章

  • 内核睡眠机制和等待队列
    内核睡眠机制:进程通过睡眠机制释放处理器,使其能够处理其他线程。处理器睡眠的原因可能在于感知数据可用性,或等待资源释放内核调度器管理要运行的任务列表,这被称为运行队列。睡眠进程不再被调度,因为已将它们从运行队列中移除了。除非改变状态(唤醒),否则睡眠进程将永远不会被执行。......
  • 3/24——周报-最近训练的情况
    PTA自主训练1:自主训练2:洛谷VJ牛客总结做题数量不够,思路匮乏,正在学习算法,对一些算法深层的理解不到位。望继续努力,拿出热情。......
  • 7.2 文件的特殊权限:suid sgid sticky和文件扩展权限ACL
    文件的特殊权限:suidsgidsticky和文件扩展权限ACL其实文件与目录设置不止这些,还有所谓的特殊权限。由于特殊权限会拥有一些`特权`特殊权限:7.2.1文件的特殊权限:suidsgidsticky7.2.1.1SUID(setuid设置用户ID):限定:只能设置在二进制可执行......
  • 软件第三方测试、第三方测试机构和第三方测试报告的收费情况
    第三方测试一、软件第三方测试:软件第三方测试是指由独立于软件开发团队之外的专业测试团队对软件进行全面的测试和评估。这些第三方测试团队通常由专业的测试人员和质量控制专家组成,他们有丰富的测试经验和专业知识,能够全面、客观地评估软件的性能、功能和质量。二、第......
  • 特殊IP地址
    0.0.0.0没有IP地址主机端:DHCP分配过程中,PC用0.0.0.0表示本机;比如主机发送DHPCDiscover广播报文的源目地址和端口是0.0.0.0:68->255.255.255.255:67服务器端:0.0.0.0本机所有IPv4地址;如果主机有两个IP地址,该主机一个服务监听的地址是0.0.0.0(比如FTP服务开启监听全0地址),那么通......
  • 2023年护网新情况总结
    2023年护网新情况总结✦.甲方客户预算总体上降低了,甚至有的客户预算直接砍了一半。厂商、供应商、安全工程师都面临了不小的压力。甲方客户开始没有那么专业的安全人员,到招兵卖马,成立安全运营的部门,厂商工程师或早期护网人员及后来护网的人员逐渐进入甲方。所以甲方客户......
  • MegaCli64查看磁盘损坏,错误个数统计情况
     如下,两个命令,是磁盘濒临崩坏,比如存在扇区损坏之类的事情发生。咨询的浪潮热线,报sn。他们的临界值是500,我们监控脚本是200告警。PredictiveFailureCount这个的数字比MediaErrorCount这个严重, #/opt/MegaRAID/MegaCli/MegaCli64-PDList-aALL-NoLog|grep-ierrorMe......
  • .forEach循环和.map()循环的主要区别,它们分别在什么情况下使用?
      .forEach()和.map()都是JavaScript数组的迭代方法,用于对数组中的每个元素执行某个操作。它们之间的主要区别在于返回值和使用情况。1.forEach()方法:  .forEach()方法用于遍历数组中的每个元素,并对每个元素执行指定的回调函数。该方法没有返回值,它仅用于执......
  • python连接clickhouse-当密码中存在特殊字符比如@时处理方法
    我是使用clickhouse_sqlalchemy库来使用clickhous的。我的密码是:'Lovedan@971220'连接clickhous执行sql语句时候,会报错认证失败:Origexception:Code:516,e.displayText()=DB::Exception:default:Authenticationfailed:passwordisincorrectorthereisnouserwith......
  • ​R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况
    ​R语言生存分析COX回归分析实战:两种治疗方法发生肾功能损害的情况目录......