⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compile_all.cpp

📁 linux 环境下比较好的一个线程池实现源代码
💻 CPP
字号:
/*! \file* \brief threadpool tutorial.** This file contains a tutorial for the threadpool library. ** Copyright (c) 2005-2006 Philipp Henkel** Distributed under the Boost Software License, Version 1.0. (See* accompanying file LICENSE_1_0.txt or copy at* http://www.boost.org/LICENSE_1_0.txt)** http://threadpool.sourceforge.net**/#include <iostream>#include <sstream>#include <boost/thread/mutex.hpp>#include <boost/bind.hpp>#include <boost/threadpool.hpp>using namespace std;using namespace boost::threadpool;//// Helpersboost::mutex m_io_monitor;void print(string text){  boost::mutex::scoped_lock lock(m_io_monitor);  cout << text;}template<typename T>string to_string(T const & value){  ostringstream ost;  ost << value;  ost.flush();  return ost.str();}//// An example task functionsvoid task_1(){  print("  task_1()\n");}void task_2(){  print("  task_2()\n");}void task_3(){  print("  task_3()\n");}int task_4(){  print("  task_4()\n");  return 4;}void task_with_parameter(int value){  print("  task_with_parameter(" + to_string(value) + ")\n");}int loops = 0;bool looped_task(){  print("  looped_task()\n");  return ++loops < 5; }int task_int(){  print("  task_int()\n");  return 23;}void fifo_pool_test(){    pool tp;        tp.schedule(&task_1);    tp.schedule(boost::bind(task_with_parameter, 4));    if(!tp.empty())    {      tp.clear();  // remove all tasks -> no output in this test    }    size_t active_threads   = tp.active();    size_t pending_threads  = tp.pending();    size_t total_threads    = tp.size();        size_t dummy = active_threads + pending_threads + total_threads;    dummy++;    tp.size_controller().resize(5);    tp.wait();}void lifo_pool_test(){    lifo_pool tp;    tp.size_controller().resize(0);    schedule(tp, &task_1);    tp.size_controller().resize(10);    tp.wait();}void prio_pool_test(){    prio_pool tp(2);    schedule(tp, prio_task_func(1, &task_1));    schedule(tp, prio_task_func(10,&task_2));}void future_test(){    fifo_pool tp(5);    future<int> fut = schedule(tp, &task_4);    int res = fut();}int main (int , char * const []) {  fifo_pool_test();  lifo_pool_test();  prio_pool_test();  future_test();  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -