ANKI_TEST(Util, Threadpool) { const U32 threadsCount = 4; const U32 repeat = 5; Threadpool* tp = new Threadpool(threadsCount); TestJobTP jobs[threadsCount]; for(U32 i = 1; i < repeat; i++) { U32 iterations = rand() % 100000; for(U32 j = 0; j < threadsCount; j++) { jobs[j].in = i; jobs[j].iterations = iterations; tp->assignNewTask(j, &jobs[j]); } ANKI_TEST_EXPECT_NO_ERR(tp->waitForAllThreadsToFinish()); for(U32 j = 0; j < threadsCount; j++) { ANKI_TEST_EXPECT_EQ(jobs[j].in, i + iterations); } } delete tp; }
void threadPoolTest(){ Threadpool* pt = new Threadpool(3); pt->Start(); for (int i =0; i < 20; i += 3){ Task* tmp = new CMTask(i); pt->AddTask(tmp); } sleep(10); }
void WordQueryServer::onMessage(const TcpConnectionPtr & conn) { string msg(conn->receive()); size_t pos = msg.find('\n'); msg = msg.substr(0, pos); cout << "client:" << msg << ",size:" << msg.size() << endl; //string ret = _wordQuery.doQuery(msg); //cout << "result's size:" << ret.size() << endl; //conn->send(ret); _pool.addTask(std::bind(&WordQueryServer::doTaskThread, this, conn, msg)); }
void ServerModule::Init(const string& conf) { try { PropertyConfigurator::configure("servermodule/ServerModulelog.conf"); } catch(std::exception& e) { LOG4CXX_FATAL(logger, "exception:%s "<< e.what()); return; } logger = log4cxx::LoggerPtr(log4cxx::Logger::getLogger("ServerModule")); LOG4CXX_DEBUG(logger, "server module initi, conf"<<conf); pool.RegistersJob(std::tr1::bind(&ServerModule::myjob, this, std::tr1::placeholders::_1)); }
void ServerModule::Run() { LOG4CXX_DEBUG(logger, "server module run"); pool.Start(22222); }
void WordQueryServer::start() { _pool.start(); _tcpServer.start(); }