Modernize Thread
- Based on C++11's `thread` and `thread_local` - No more need to allocate-deallocate or check for null - No pointer anymore, just a member variable - Platform-specific implementations no longer needed (except for the few cases of non-portable functions) - Simpler for `NO_THREADS` - Thread ids are now the same across platforms (main is 1; others follow)
This commit is contained in:
parent
6ddfc8e718
commit
99fe462452
87 changed files with 385 additions and 1056 deletions
|
|
@ -122,8 +122,8 @@ public:
|
|||
int message_count_to_read = 0;
|
||||
bool exit_threads = false;
|
||||
|
||||
Thread *reader_thread = nullptr;
|
||||
Thread *writer_thread = nullptr;
|
||||
Thread reader_thread;
|
||||
Thread writer_thread;
|
||||
|
||||
int func1_count = 0;
|
||||
|
||||
|
|
@ -221,20 +221,16 @@ public:
|
|||
}
|
||||
|
||||
void init_threads() {
|
||||
reader_thread = Thread::create(&SharedThreadState::static_reader_thread_loop, this);
|
||||
writer_thread = Thread::create(&SharedThreadState::static_writer_thread_loop, this);
|
||||
reader_thread.start(&SharedThreadState::static_reader_thread_loop, this);
|
||||
writer_thread.start(&SharedThreadState::static_writer_thread_loop, this);
|
||||
}
|
||||
void destroy_threads() {
|
||||
exit_threads = true;
|
||||
reader_threadwork.main_start_work();
|
||||
writer_threadwork.main_start_work();
|
||||
|
||||
Thread::wait_to_finish(reader_thread);
|
||||
memdelete(reader_thread);
|
||||
reader_thread = nullptr;
|
||||
Thread::wait_to_finish(writer_thread);
|
||||
memdelete(writer_thread);
|
||||
writer_thread = nullptr;
|
||||
reader_thread.wait_to_finish();
|
||||
writer_thread.wait_to_finish();
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue