diff options
author | Mattes D <github@xoft.cz> | 2014-08-28 15:53:36 +0200 |
---|---|---|
committer | Mattes D <github@xoft.cz> | 2014-08-28 15:53:36 +0200 |
commit | 52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c (patch) | |
tree | c7d8ad9c38a32102bd46e0450d271ea1308828ce /Tools/AnvilStats/Processor.cpp | |
parent | CheckBasicStyle: Added checking for the "template" keyword. (diff) | |
parent | Fixed ItemCategory code example. (diff) | |
download | cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar.gz cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar.bz2 cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar.lz cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar.xz cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.tar.zst cuberite-52a6b30f324728aee1c1b8e54b8b4ed9c4e9b60c.zip |
Diffstat (limited to '')
-rw-r--r-- | Tools/AnvilStats/Processor.cpp | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/Tools/AnvilStats/Processor.cpp b/Tools/AnvilStats/Processor.cpp index a16f78c18..6c4bb0ad5 100644 --- a/Tools/AnvilStats/Processor.cpp +++ b/Tools/AnvilStats/Processor.cpp @@ -28,6 +28,7 @@ cProcessor::cThread::cThread(cCallback & a_Callback, cProcessor & a_ParentProces m_Callback(a_Callback), m_ParentProcessor(a_ParentProcessor) { + LOG("Created a new thread: %p", this); super::Start(); } @@ -35,11 +36,20 @@ cProcessor::cThread::cThread(cCallback & a_Callback, cProcessor & a_ParentProces +void cProcessor::cThread::WaitForStart(void) +{ + m_HasStarted.Wait(); +} + + + + + void cProcessor::cThread::Execute(void) { - LOG("Started a new thread: %d", cIsThread::GetCurrentID()); + LOG("Started a new thread: %p, ID %d", this, cIsThread::GetCurrentID()); - m_ParentProcessor.m_ThreadsHaveStarted.Set(); + m_HasStarted.Set(); for (;;) { @@ -52,7 +62,7 @@ void cProcessor::cThread::Execute(void) ProcessFile(FileName); } // for-ever - LOG("Thread %d terminated", cIsThread::GetCurrentID()); + LOG("Thread %p (ID %d) terminated", this, cIsThread::GetCurrentID()); } @@ -522,20 +532,18 @@ void cProcessor::ProcessWorld(const AString & a_WorldFolder, cCallbackFactory & #endif // _DEBUG //*/ + // Start all the threads: for (int i = 0; i < NumThreads; i++) { cCallback * Callback = a_CallbackFactory.GetNewCallback(); m_Threads.push_back(new cThread(*Callback, *this)); } - // Wait for the first thread to start processing: - m_ThreadsHaveStarted.Wait(); - - // Wait for all threads to finish - // simply by calling each thread's destructor sequentially + // Wait for all threads to finish: LOG("Waiting for threads to finish"); for (cThreads::iterator itr = m_Threads.begin(), end = m_Threads.end(); itr != end; ++itr) { + (*itr)->WaitForStart(); delete *itr; } // for itr - m_Threads[] LOG("Processor finished"); |