Breaking changes in Boost.Thread 3.0.0

后端 未结 2 1511
無奈伤痛
無奈伤痛 2021-01-18 01:16

In the release notes of version 1.50.0 of the Boost libraries I noted two breaking changes (see here):

#6266 Breaking change: thread destructor should ca

相关标签:
2条回答
  • 2021-01-18 01:57

    The following code used to work correctly, but with v3 the program would be aborted as t leaves its scope, because thread::~thread calls std::terminate, instead of silently detaching from the thread:

    #include <boost/thread.hpp> 
    #include <iostream>
    
    void f()
    {}
    
    int main() 
    { 
      {
        boost::thread t(f);
      }
      std::cout << "exiting gracefully" << std::endl;
    } 
    
    0 讨论(0)
  • 2021-01-18 02:06

    When it says "Breaking change", it means, "Your program is broken if you depend on behaviour which was previously X, but is now Y".

    For the given two changes, it means that if you rely on the destructor or move assignment calling join() (or detach()), which I believe was the previous behaviour, your program must now explicitly join() or detach() or meet your friend std::terminate(). It's not a compile-time error, but nor is it unpredictable run-time behaviour- you'll get a nice clean crash leading right back to boost::thread's destructor, which is the cause of the problem.

    0 讨论(0)
提交回复
热议问题