当前位置: 首页 > news >正文

凡科网站的ftpwordpress怎么改导航

凡科网站的ftp,wordpress怎么改导航,微信支付申请网站吗,360优化大师官方下载手机文章目录 #x1f308; 一、线程池的概念#x1f308; 二、线程池的应用场景#x1f308; 三、线程池的实现 #x1f308; 一、线程池的概念 线程池 (thread pool) 是一种利用池化技术的线程使用模式。 虽然创建线程的代价比创建进程的要小很多#xff0c;但小并不意味着… 文章目录 一、线程池的概念 二、线程池的应用场景 三、线程池的实现 一、线程池的概念 线程池 (thread pool) 是一种利用池化技术的线程使用模式。 虽然创建线程的代价比创建进程的要小很多但小并不意味着没有。如果每次处理任务都要创建线程积少成多下代价还是蛮高的。 而线程池就可以解决这种问题提前先创建出一批线程没任务时让这些线程泡在池子里睡觉来任务后将这些线程从池子里叫起来干活。 水池里流淌的是水流而线程池里流淌的则是执行流 (线程)。 不要被线程池这个称呼给套住了本质上来说线程池 任务队列 条件变量 多执行流。 当任务队列中没任务时让一堆线程在指定条件变量下等待当任务队列中有任务时会唤醒在条件变量下等待的线程让被唤醒的线程从任务队列中获取任务。 说到底线程池本质上就是个生产消费模型。 二、线程池的应用场景 需要大量的线程来完成任务且完成任务的时间比较短。 例如 web 服务器完成网页请求这种单个任务小但任务量大的任务就很适合使用线程池技术。 对性能要求苛刻的应用要求服务器迅速响应客户请求。接收突发性的大量请求但不至于使服务器因此产生大量线程的应用。 在没有线程池的情况下如果没有线程池短时间内将产生大量线程可能使内存到达极限。 三、线程池的实现 当前要实现一个主线程不停的往任务队列中放任务然后让线程池中的线程从任务队列中获取任务再进行任务处理的一个简易线程池。 实现的这个简易的线程池整体分为线程池部分代码、任务类型部分代码、主线程部分代码这三部分。 这三部分代码可以分别写在三个文件中 (记得包含对应头文件)也可以放在一个文件中此处为了方便演示就全写在一个文件中。 #include queue #include iostream #include unistd.h #include pthread.husing std::cerr; using std::cout; using std::endl; using std::queue;/* ---------- 任务类型代码设计 ---------- */ class task { private:int _x; // 左操作数int _y; // 右操作数char _op; // 操作符public:task(int x 0, int y 0, char op 0): _x(x), _y(y), _op(op){}// 处理任务的方法void run(){int result 0; // 记录计算结果switch (_op){case :result _x _y;break;case -:result _x - _y;break;case *:result _x * _y;break;case /:if (_y 0){cerr 除零错误 std::endl;return;}else{result _x / _y;}break;case %:if (_y 0){std::cerr 模零错误 std::endl;return;}else{result _x % _y;}break;default:cerr 非法运算符 endl;return;}cout 新线程 [ pthread_self() ] 获取任务成功, 任务的处理结果为: _x _op _y result endl;}~task(){} };/* ---------- 线程池代码设计 ---------- */ #define NUM 5 // 任务队列的容量template typename T class thread_pool { private:queueT _task_queue; // 任务队列int _thread_num; // 线程池中线程的数量pthread_mutex_t _mutex; // 线程池中的线程的互斥锁pthread_cond_t _cond; // 线程池中的线程的条件变量private:// 判断任务队列是否为空bool is_empty(){return _task_queue.size() 0;}// 上锁void lock_queue(){pthread_mutex_lock(_mutex);}// 解锁void unlock_queue(){pthread_mutex_unlock(_mutex);}// 让线程去指定条件变量处等待等待void wait(){pthread_cond_wait(_cond, _mutex);}// 唤醒在指定条件变量处等待的线程void wakeup(){pthread_cond_signal(_cond);}public:// 线程池的构造函数thread_pool(int num NUM): _thread_num(num){pthread_mutex_init(_mutex, nullptr); // 初始化互斥锁pthread_cond_init(_cond, nullptr); // 初始化条件变量}// 线程池中的线程所要执行的函数static void *routine(void *arg){pthread_detach(pthread_self());thread_pool *self (thread_pool *)arg;// 不断从任务队列获取中任务然后处理这些任务while (true){self-lock_queue(); // 获取任务前, 先对任务队列上锁while (self-is_empty()) // 如果任务队列为空, 则让线程去休眠self-wait();T task; // 定义任务对象self-pop(task); // 用定义好的任务对象从任务队列中获取任务self-unlock_queue(); // 获取任务后, 要对任务队列解锁task.run(); // 处理获取到的任务}}// 初始化线程池 (为线程池创建一批线程)void thread_pool_init(){pthread_t tid;for (int i 0; i _thread_num; i)pthread_create(tid, nullptr, routine, this); // 传入 this 指针作为 routine 函数的参数}// 往任务队列放任务主线程调用void push(const T task){lock_queue(); // 给任务队列上锁_task_queue.push(task); // 往任务队列中放入任务unlock_queue(); // 为任务队列解锁wakeup(); // 来活了, 唤醒在线程池中休眠的线程}// 从任务队列获取任务线程池中的线程调用void pop(T *task){*task _task_queue.front();_task_queue.pop();}// 线程池的析构函数~thread_pool(){pthread_mutex_destroy(_mutex); // 销毁互斥锁pthread_cond_destroy(_cond); // 销毁条件变量} };/* ---------- 主线程代码设计 ---------- */ int main() {srand((unsigned int)time(nullptr)); // 随机数种子thread_pooltask *tp new thread_pooltask; // 定义线程池对象tp-thread_pool_init(); // 初始化线程池当中的线程const char *op -*/%; // 操作符集// 不断往任务队列塞计算任务while (true) {sleep(1);int x rand() % 100; // 左操作数int y rand() % 100; // 右操作数int index rand() % 5; // 随机获取操作符集中的某个操作符的下标task task(x, y, op[index]); // 构造一个任务对象tp-push(task); // 将构造的任务对象放入任务队列cout 主线程放入任务完毕, 放入的任务为: x op[index] y ? endl;}return 0; }因为没有将屏幕这个临界资源也用锁保护起来因此才会有一开始的主线程和新线程打印的内容混在一起的状况出现。要解决这个问题可以直接使用互斥锁将访问屏幕这个临界资源的临界区保护起来就行。
http://www.eeditor.cn/news/125671/

相关文章:

  • 包头做网站的公司招聘信息企业网站建设和运营
  • Wordpress网站删除多余主题华为荣耀官网网站
  • 安徽做网站找谁营销平台网站建设
  • 衡水哪有做网站的网站推广
  • 怎么备案网站网站上传图片尺寸
  • 建设法规的网站企业建设网站对客户的好处
  • 天津狐臭在哪里做津门网站I国际国内时事
  • 视频上传网站如何做推广软件的渠道有哪些
  • 网站页中繁体转移代码wordpress 加入搜索引擎
  • 网站域名试用期大河网
  • 深圳摇号申请网站网站建设的安全措施
  • 网站开发 数字证书WordPress设置会话有效时间
  • 网站建设需要使用阿里云吗大型网站的建设
  • 教育培训网站网站源模板
  • 网站建设文献综述范文邢台市应急管理局
  • 网站建设的种类四川工程建设项目一般挂什么网站
  • 酒泉市建设局网站招标办iis做网站视
  • 建设网站都需要哪些内容html页面能做成网站吗
  • 免费做公众号的网站宿州高端网站建设公司哪家好
  • 淘宝建设网站的好处有限公司和责任公司的区别
  • 慕枫宁波网站建设天津建设电工证查询网站
  • 动漫设计师资格证网站优化的图片
  • 网站目标关键词广州市律师网站建设怎么样
  • 常州市城市建设局网站网站运营推广策划书
  • 网站建设行业税率做网站后台教程视频
  • 网站做优化的必要性苏州网络公司排行榜
  • 长沙seo公司网站优化网上商城个人店铺
  • 厂 网站 南宁烟台做网站的公司
  • 网上销售网站建设策划搜索引擎的营销方法有哪些
  • 做网站需要什么认证济南精品建站外包公司价格