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

小语种网站建设要点商丘网站制作费用

小语种网站建设要点,商丘网站制作费用,自然堂网站建设平台分析,做电商需要学哪些基础实现一个服务器端线程池需要处理多个客户端请求&#xff0c;同时提高资源利用率和响应速度。 在main函数中&#xff0c;创建一个线程池并提交多个任务。每个任务在不同的线程中执行&#xff0c;演示了线程池的并发处理能力 #include <iostream> #include <vector>…

实现一个服务器端线程池需要处理多个客户端请求,同时提高资源利用率和响应速度。

  • main函数中,创建一个线程池并提交多个任务。
  • 每个任务在不同的线程中执行,演示了线程池的并发处理能力
#include <iostream>
#include <vector>
#include <thread>
#include <queue>
#include <mutex>
#include <condition_variable>
#include <functional>
#include <atomic>// 线程池类定义
class ThreadPool {
public:// 构造函数,接受线程数量作为参数ThreadPool(size_t numThreads);// 析构函数~ThreadPool();// 向任务队列中添加任务void enqueueTask(std::function<void()> task);private:// 工作线程的集合std::vector<std::thread> workers;// 任务队列std::queue<std::function<void()>> tasks;// 互斥锁保护任务队列std::mutex queueMutex;// 条件变量用于线程同步std::condition_variable condition;// 原子布尔值,用于指示线程池是否停止std::atomic<bool> stop;// 每个线程执行的函数void workerThread();
};// 线程池构造函数
ThreadPool::ThreadPool(size_t numThreads) : stop(false) {// 创建指定数量的线程,并将它们添加到工作线程集合中for (size_t i = 0; i < numThreads; ++i) {workers.emplace_back([this] { this->workerThread(); });}
}// 线程池析构函数
ThreadPool::~ThreadPool() {// 设置停止标志为truestop = true;// 通知所有等待的线程condition.notify_all();// 等待所有线程完成工作for (std::thread &worker : workers) {if (worker.joinable()) {worker.join();}}
}// 将任务添加到任务队列中
void ThreadPool::enqueueTask(std::function<void()> task) {{// 加锁以保护任务队列std::unique_lock<std::mutex> lock(queueMutex);// 将任务添加到队列中tasks.push(task);}// 通知一个等待的线程condition.notify_one();
}// 每个线程执行的函数,从任务队列中提取任务并执行
void ThreadPool::workerThread() {while (!stop) {std::function<void()> task;{// 加锁以保护任务队列std::unique_lock<std::mutex> lock(queueMutex);// 等待直到有任务或停止标志被设置condition.wait(lock, [this] { return stop || !tasks.empty(); });// 如果停止标志被设置且任务队列为空,则退出if (stop && tasks.empty()) {return;}// 从任务队列中取出一个任务task = std::move(tasks.front());tasks.pop();}// 执行任务task();}
}// 主函数,演示线程池的使用
int main() {// 创建一个线程池,包含4个线程ThreadPool pool(4);// 提交8个任务到线程池for (int i = 0; i < 8; ++i) {pool.enqueueTask([i] {std::cout << "Processing task " << i << " in thread " << std::this_thread::get_id() << std::endl;});}// 等待一段时间以确保所有任务完成std::this_thread::sleep_for(std::chrono::seconds(2));return 0;
}
  1. ThreadPool类:表示线程池,包含线程向量、任务队列、互斥锁、条件变量和停止标志。
  2. 构造函数:初始化线程池,创建指定数量的线程,并将每个线程指向workerThread函数。
  3. 析构函数:设置停止标志,通知所有线程并等待它们完成。
  4. enqueueTask方法:将任务添加到任务队列中,并通知一个等待线程。
  5. workerThread方法:线程工作函数,从任务队列中提取任务并执行。
http://www.dtcms.com/wzjs/550378.html

相关文章:

  • 工商年检在哪个网站做wordpress配置外网映射
  • 哈尔滨网站排名公司苏州网页设计培训
  • 如何给客户做网站方案源码之家app
  • 凡科建站怎么建网站wordpress 宽屏
  • 做网站的框架结构湛江论坛建站模板
  • 极简风格网站介绍广东seo外包服务
  • 长沙企业做网站电子商务网站案例分析
  • 优化网站建设人员组成黄江镇网站仿做
  • 微信营销手机网站模板平台公司331名单
  • 行业信息网站建设方案免费查企业信息的平台
  • 南阳专业网站建设价格wamp搭建wordpress
  • 滨州网站建设哪家专业眉山注册公司流程和费用
  • 优秀学校网站模板韩都衣舍网站建设
  • html5网站建设加盟新浪微博 搭建网站
  • 海门市住房和城乡建设局网站如何登录百度站长平台
  • 随州网站建设学习网站开发需要文章写的好吗
  • 长沙好的网站建设公司排名wordpress移动端广告位
  • 网站建设框架网页设计与制作就业前景
  • 旅游景点网站模板网站数据包括哪些内容
  • 网站设计机构排行榜wordpress编辑导航栏
  • 北京网络营销外包公司哪家好广州seo和网络推广
  • 商业网站设计方案模板人力资源服务外包
  • 违法人员都是怎么建设网站的九江集团网站建设
  • 网站开发用什么编程电商有哪些推广方法
  • 海澜之家网站建设的计划深圳百度公司地址在哪里
  • 丹东市网站开发公司注册公司流程图片
  • 广州联亨科技网站建设建立的读音
  • 公司网站维护和更新属于哪个部门电子商务网站设计岗位主要是?
  • 老山网站建设网站建设介绍推广用语
  • 吉林省建设项目招标网站个人网站搭建详细步骤