Moving Threads
Moving threads make the lifetime issues of threads even harder.
A thread supports the move semantic but not the copy semantic. The reason being the copy constructor of std::thread
is set to delete
: thread(const thread&) = delete;
. Imagine what happens if you copy a thread while the thread is holding a lock.
Let’s move a thread.
Both threads t
and t2
should do their simple job: printing their IDs. In addition to that, thread t2
is moved to t
(line 12). In the end, the main thread takes care of its children and joins them. But wait, the result is very different from my expectations...