Lightweight non-locking thread pool for multi-threading work jobs..
#include <sstream> #include <math.h> #include "workthreadpool.h" class MyThreadPool : public bfd::WorkThreadPool { public: MyThreadPool(int size) : bfd::WorkThreadPool(size) { } void Handle(const string &msg) { stringstream ss; ss << "worker (" << std::this_thread::get_id() << ") got msg: " << msg; printf("%s\n", ss.str().c_str()); for (int i=0; i<=999999; i++) { double result = sqrt(sqrt(i) / 93.234); } } }; int main() { printf("start running ....\n"); MyThreadPool pool(5); pool.Start(); for (int i=0; i<100; i++) { pool.SendMessage("msg info ----------"); } pool.Stop(); return 0; }