diff options
author | Tycho <work.tycho+git@gmail.com> | 2014-09-05 16:26:30 +0200 |
---|---|---|
committer | Tycho <work.tycho+git@gmail.com> | 2014-09-05 16:26:30 +0200 |
commit | aa2495e3867e87ea37729b58b0df3f2ce940dbb6 (patch) | |
tree | 9f71b03f914cd7b077f6c13cd2b6ae2f691c5c66 /Tools/AnvilStats/Processor.cpp | |
parent | Moved to passing pointers instead of passing by reference. (diff) | |
parent | Merge pull request #1375 from mc-server/EntitiesInBox (diff) | |
download | cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.gz cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.bz2 cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.lz cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.xz cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.tar.zst cuberite-aa2495e3867e87ea37729b58b0df3f2ce940dbb6.zip |
Diffstat (limited to 'Tools/AnvilStats/Processor.cpp')
-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"); |