From 0fbd80f4f22263f5e6a5ff59a0cf9307f6ed0519 Mon Sep 17 00:00:00 2001 From: "marko:)" Date: Fri, 18 Sep 2015 12:04:20 +0200 Subject: [PATCH] added a verbose pre-processor symbol to Global.h so you can control does the ThreadPool class write anything to console output. Also I altered a Makefile so that it also makes an .so file and puts it in bin directory --- Global.h | 3 +++ Makefile | 17 ++++++++++------- Task.cpp | 3 ++- ThreadPool.cpp | 26 ++++++++++++++++++++++++-- bin/example/threadpool_test | Bin 43215 -> 0 bytes bin/examplethreadpool_test | Bin 43791 -> 0 bytes threadpool_test.cpp | 1 - 7 files changed, 39 insertions(+), 11 deletions(-) delete mode 100755 bin/example/threadpool_test delete mode 100755 bin/examplethreadpool_test diff --git a/Global.h b/Global.h index a1d64d5..19c3f92 100644 --- a/Global.h +++ b/Global.h @@ -1,5 +1,8 @@ #pragma once +// pre processor symbols +//#define VERBOSE + const int DEFAULT_POOL_SIZE = 10; const int STARTED = 0; const int STOPPED = 1; diff --git a/Makefile b/Makefile index c99eba3..6c773e3 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,15 @@ -OBJPATH=bin/obj -EXAMPLEPATH=bin/example +BINPATH=./bin +OBJPATH=./obj all: - g++ CondVar.cpp -lpthread -c -o $(OBJPATH)/CondVar.o - g++ Mutex.cpp -lpthread -c -o $(OBJPATH)/Mutex.o - g++ Task.cpp -lpthread -c -o $(OBJPATH)/Task.o - g++ ThreadPool.cpp -lpthread -c -o $(OBJPATH)/ThreadPool.o - g++ $(OBJPATH)/CondVar.o $(OBJPATH)/Mutex.o $(OBJPATH)/Task.o $(OBJPATH)/ThreadPool.o threadpool_test.cpp -lpthread -o $(EXAMPLEPATH)threadpool_test + g++ CondVar.cpp -lpthread -fpic -c -o $(OBJPATH)/CondVar.o + g++ Mutex.cpp -lpthread -fpic -c -o $(OBJPATH)/Mutex.o + g++ Task.cpp -lpthread -fpic -c -o $(OBJPATH)/Task.o + g++ ThreadPool.cpp -lpthread -fpic -c -o $(OBJPATH)/ThreadPool.o + g++ -fPIC -shared -lpthread $(OBJPATH)/CondVar.o $(OBJPATH)/Mutex.o $(OBJPATH)/Task.o $(OBJPATH)/ThreadPool.o -o $(BINPATH)/libthreadpool.so +# g++ threadpool_test.cpp -L$(BINPATH) -lthreadpool -lpthread -fpic -o $(BINPATH)/threadpool_test + + g++ $(OBJPATH)/CondVar.o $(OBJPATH)/Mutex.o $(OBJPATH)/Task.o $(OBJPATH)/ThreadPool.o threadpool_test.cpp -lpthread -o $(BINPATH)/threadpool_test #all: # g++ threadpool.cpp -lpthread -fpic -c -o bin/obj/threadpool.o diff --git a/Task.cpp b/Task.cpp index b208c09..395a594 100644 --- a/Task.cpp +++ b/Task.cpp @@ -7,7 +7,8 @@ Task::~Task() { } void Task::operator()() { - (*m_fn_ptr)(m_arg); + // (*m_fn_ptr)(m_arg); + run(); // we can reuse run() here instead of copying the code from run if (m_arg != NULL) { delete m_arg; } diff --git a/ThreadPool.cpp b/ThreadPool.cpp index 89c29b7..57b5c30 100644 --- a/ThreadPool.cpp +++ b/ThreadPool.cpp @@ -2,12 +2,16 @@ ThreadPool::ThreadPool() : m_pool_size(DEFAULT_POOL_SIZE) { + #ifdef VERBOSE cout << "Constructed ThreadPool of size " << m_pool_size << endl; + #endif } ThreadPool::ThreadPool(int pool_size) : m_pool_size(pool_size) { + #ifdef VERBOSE cout << "Constructed ThreadPool of size " << m_pool_size << endl; + #endif } ThreadPool::~ThreadPool() @@ -43,7 +47,9 @@ int ThreadPool::initialize_threadpool() } m_threads.push_back(tid); } + #ifdef VERBOSE cout << m_pool_size << " threads created by the thread pool" << endl; + #endif return 0; } @@ -57,27 +63,37 @@ int ThreadPool::destroy_threadpool() m_task_mutex.lock(); m_pool_state = STOPPED; m_task_mutex.unlock(); + #ifdef VERBOSE cout << "Broadcasting STOP signal to all threads..." << endl; + #endif m_task_cond_var.broadcast(); // notify all threads we are shttung down int ret = -1; for (int i = 0; i < m_pool_size; i++) { void* result; ret = pthread_join(m_threads[i], &result); + #ifdef VERBOSE cout << "pthread_join() returned " << ret << ": " << strerror(errno) << endl; + #endif m_task_cond_var.broadcast(); // try waking up a bunch of threads that are still waiting } + #ifdef VERBOSE cout << m_pool_size << " threads exited from the thread pool" << endl; + #endif return 0; } void* ThreadPool::execute_thread() { Task* task = NULL; + #ifdef VERBOSE cout << "Starting thread " << pthread_self() << endl; + #endif while(true) { // Try to pick a task + #ifdef VERBOSE cout << "Locking: " << pthread_self() << endl; + #endif m_task_mutex.lock(); // We need to put pthread_cond_wait in a loop for two reasons: @@ -89,27 +105,33 @@ void* ThreadPool::execute_thread() while ((m_pool_state != STOPPED) && (m_tasks.empty())) { // Wait until there is a task in the queue // Unlock mutex while wait, then lock it back when signaled + #ifdef VERBOSE cout << "Unlocking and waiting: " << pthread_self() << endl; + #endif m_task_cond_var.wait(m_task_mutex.get_mutex_ptr()); + #ifdef VERBOSE cout << "Signaled and locking: " << pthread_self() << endl; + #endif } // If the thread was woken up to notify process shutdown, return from here if (m_pool_state == STOPPED) { + #ifdef VERBOSE cout << "Unlocking and exiting: " << pthread_self() << endl; + #endif m_task_mutex.unlock(); pthread_exit(NULL); } task = m_tasks.front(); m_tasks.pop_front(); + #ifdef VERBOSE cout << "Unlocking: " << pthread_self() << endl; + #endif m_task_mutex.unlock(); - //cout << "Executing thread " << pthread_self() << endl; // execute the task (*task)(); // could also do task->run(arg); - //cout << "Done executing thread " << pthread_self() << endl; delete task; } return NULL; diff --git a/bin/example/threadpool_test b/bin/example/threadpool_test deleted file mode 100755 index 9f36c86884ad605da3a4b1bab861dba848481c01..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43215 zcmeHwe_&MAvH#64M2iqHSVV*s0YinDgaE;x8yxJ4hj1NlUno%cLIFJ0$fENj(h>(O*N|Kk6I(s}p)% zrXM9L`w18o{MUxWOIP)8<6*jg>nbh+`uRq~M}$#BUGI9-BRxOul`D)j(w>)HszrYd z^*CJ8(%d+=@jbyWEUADuWo zKk&1vy!%F#Z>U`JG|*|UZ$g2wX(%rOmk$41G@K5<5_n%4IkSLEhyNS!>E!&>L!Y}m z+WnCS|6CXG~p@zouXP?&;J zpxL!SUl2Ex466|+7_t`HMT?ybJ1F}MhN9Cp;#;uQ~YVUMXcErZ3~;t zZOw5*V_G}ok@aXK7Vn5|u&}X6%Sx-DSW;@SoOL0GoXC1dfyr8?X+}Ca+M;Glv?&yC zj<&hv0=>pUam85ks z#a-Jv`db@siB&?KqNdfM4l~{X`^GAp0)ZOfW~1HaCNqk0iiBD#o9fI!?HsfEnkKGS z5@`#!R5pFOx^-q=edult93^&NxABUHMP-NGoWNQVf^^6xKP`vCDOJkzM2L$ z+M#q9VxDp~&$4h!^;&Z5RZUH1j7FfyFqgEgYet(jkyvMIgosUgXfP^GYs{wAYs{6Q z<`&TpqfgEiYl%eKjn+tOYjkbIAUja&;2{Aro~mish7bR$r*HU-0j?n8F8<>xJt#dX)9CqL-x6xP9fu~$YU&kHz85#*V;J{OUq%R$JDXn$N*Kw5aPC4Tn z8o26d_)GTCm(PJ$W2q?l4!m@g355>4v%jSdJlR5Deg~e~)>qJhhe55Y+JVQwSXaFR ze};uMj0OiDj$&P_9r#fe)-c)~c&Gi>JMg0&{F@zk?Gr@4(}AZPOJCa@cxV20p96ok zW(Iu7fv4PAUppN5aT*D@(}6$7f#2o8f7XHD?Z8uxuCM(L{J9zl*yq4caNrL)@aH-3 zhaLEd4t&yqKi`2r?!ZrS;0GLdr=J_42IeB)ne5;n>A?FO_*@76a}NA?2mS&F-siwi zap3bE_zNBQLI-}T17GUEPjlddUB^ZSyK@57J|lSh?s!hJ7Q|rJ-jRD8Ot>AKQv;U4 zX?6HJX0ji5R9;O?{f7r}OV@)Ro5RPEo))*}gA5xj7R{u^ef1k=UrTQP@@?%t{snoxX%ipFlO`-nHT)v;mG$>m}ylZ*C0gmTgQ zm5HBxF_?HK*mdN1bzNoe?%XT=MzHsVhpr&dyW=vykvt8GoLD(#a)n{+GU3omg0t!Y zf?WfngNfg+%UrQ%7v!-cpIGrckp>TsnY@{ByQrl3Ul_;&e=zZ4@P+rT3TE^Le=^XC z%0D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 diff --git a/bin/examplethreadpool_test b/bin/examplethreadpool_test deleted file mode 100755 index 0c25a988f38fec7533a11ceebc8ea25bb02e7558..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43791 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 diff --git a/threadpool_test.cpp b/threadpool_test.cpp index 78e4de0..ce07d73 100644 --- a/threadpool_test.cpp +++ b/threadpool_test.cpp @@ -12,7 +12,6 @@ void hello(void* arg) { int* x = (int*) arg; cout << "Hello " << *x << endl; -// cout << "\n"; } int main(int argc, char* argv[])