diff options
author | Masy98 <masy@antheruscraft.de> | 2014-08-30 21:31:51 +0200 |
---|---|---|
committer | Masy98 <masy@antheruscraft.de> | 2014-08-30 21:31:51 +0200 |
commit | 2d5a38bd61aa9436f2944f26344b14f92e30f025 (patch) | |
tree | d1caaf6446574ffdf676c272e39404ed8184a33b /Tools/AnvilStats/Processor.cpp | |
parent | Fixed slab name (diff) | |
parent | cChunk: Fixed the Coords param. (diff) | |
download | cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar.gz cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar.bz2 cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar.lz cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar.xz cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.tar.zst cuberite-2d5a38bd61aa9436f2944f26344b14f92e30f025.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"); |