Detect thread end

后端 未结 2 1782
悲&欢浪女
悲&欢浪女 2020-12-21 15:39

How can I detect when a thread was ended (in a platform independent way)? I have to store copies of objects for every thread and I want to know when I can dispose or redistr

2条回答
  •  遥遥无期
    2020-12-21 15:56

    It's possibly via RAII and local_thread mechanism. We create a class that do usefull work in destructor.

    class ThreadEndNotifer
    {
    public:
        ~ThreadEndNotifer()
        {
            // Do usefull work
            useFullWork();
        }
    }
    

    Next, we create local_thread variable. It can be global or class feild(thread_local class field is implicit static).

    class Foo 
    {
    private:
        // Remember about initialization like static feild
        thread_local ThreadEndNotifer mNotifer; 
    }
    

    So, the useFullWork will be called every time when any thread are ending. I like to create one global variable and init it only if needed, in this way I avoid overhead.

提交回复
热议问题