【问题标题】:Is a boost thread interruptible after termination?终止后提升线程是否可中断?
【发布时间】:2012-05-16 20:34:29
【问题描述】:

根据How can I tell reliably if a boost thread has exited its run method?,谢天谢地,您可以加入已完成的线程并避免如果您必须仅在运行时有条件地加入线程时出现的竞争条件。

但是thread::interrupt() 呢?线程退出后可以调用吗?

【问题讨论】:

    标签: multithreading boost join interrupt


    【解决方案1】:

    是的,调用这个方法是安全的。

    来自documentation

    如果 *this 指代一个执行线程,请求该线程将 下次进入预定义之一时被中断 启用中断的中断点,或者如果它当前是 在对预定义中断点之一的调用中被阻塞 已启用中断。

    boost::thread 对象 (*this) 不是“执行线程”时,这意味着没有运行,调用此方法没有任何作用

    【讨论】:

    • 很高兴知道。是否遵循线程可以安全地中断自身(可以访问线程对象)?导致只是在下一个中断点/睡眠退出?我想是的。
    • 我不是 100% 相信的,因为文档只说明如果线程仍在运行会发生什么,但我找不到任何明确提及如果线程没有运行会发生什么。另一方面,当线程没有运行时,唯一合理的做法是什么都没有......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 2019-06-06
    • 1970-01-01
    • 2012-05-27
    • 2011-10-06
    • 2011-06-07
    相关资源
    最近更新 更多