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

旅游网站模板运城姚孟网站建设

旅游网站模板,运城姚孟网站建设,租用网站,工程建设方案这行代码是C多线程编程中的一种常见用法#xff0c;具体地#xff0c;它使用std::thread创建一个新的线程#xff0c;并将该线程加入到一个std::vectorstd::thread容器中。下面是对这行代码的详细解释#xff1a; threads#xff1a;这是一个std::vectorstd::thread类型的…这行代码是C多线程编程中的一种常见用法具体地它使用std::thread创建一个新的线程并将该线程加入到一个std::vectorstd::thread容器中。下面是对这行代码的详细解释 threads这是一个std::vectorstd::thread类型的容器用于存储所有创建的线程。emplace_back这是std::vector类的一个成员函数用于在容器的末尾添加一个新的元素。与push_back不同emplace_back直接在容器的存储位置上构造元素避免了不必要的拷贝或移动操作效率更高。std::thread这是C标准库提供的线程类用于创建和管理线程。ThreadPool::threadFunction这是一个指向成员函数的指针表示要在线程中执行的函数。假设这个函数属于ThreadPool类。this这是一个指向当前对象的指针表示将当前ThreadPool对象的实例传递给threadFunction成员函数以便该函数在执行时能够访问当前对象的成员变量和成员函数。 综合起来这行代码的意思是创建一个新线程该线程执行ThreadPool类的threadFunction成员函数并将当前对象的指针作为参数传递给该函数。然后将新创建的线程加入到threads向量中进行管理。 下面是一个简化的示例演示了如何使用这行代码 #include #include #include class ThreadPool { public: ThreadPool() { // 创建多个线程每个线程执行threadFunction成员函数 for (int i 0; i 4; i) { threads.emplace_back(ThreadPool::threadFunction, this); } } ~ThreadPool() {// 等待所有线程完成for (auto thread : threads) {if (thread.joinable()) {thread.join();}} }void threadFunction() {std::cout Thread ID: std::this_thread::get_id() std::endl; }private: std::vectorstd::thread threads; }; int main() { ThreadPool pool; return 0; } 在这个示例中ThreadPool类的构造函数创建了四个线程每个线程执行threadFunction函数并输出其线程ID。程序运行时会创建四个线程并输出相应的线程ID。 这行代码是C多线程编程中条件变量std::condition_variable的一个常见用法。它用于线程同步确保线程在满足特定条件之前处于等待状态。下面是对这行代码的详细解释 condition.wait(lock, predicate) • condition 是一个 std::condition_variable 对象用于线程间的等待和通知机制。 • wait 是 std::condition_variable 类的一个成员函数使当前线程等待直到收到通知或满足给定的条件。 • lock 是一个 std::unique_lockstd::mutex 对象用于管理互斥锁的所有权。 • predicate 是一个 lambda 表达式或函数对象用于判断条件是否满足。lock • 这是一个 std::unique_lockstd::mutex 对象用于在等待期间自动管理互斥锁的上锁和解锁。 • 在 wait 调用之前lock 应该已经上锁。在 wait 期间互斥锁会被解锁以允许其他线程访问共享资源。 • 当 wait 返回时互斥锁会重新上锁以保护共享资源。this { return !taskQueue.empty() || terminate; } • 这是一个 lambda 表达式作为 wait 函数的谓词predicate。 • 它捕获了当前对象的 this 指针允许访问类的成员变量。 • return !taskQueue.empty() || terminate; 是谓词的逻辑当 taskQueue 非空或 terminate 为 true 时返回 true否则返回 false。 综合起来这行代码的意思是当前线程等待直到 taskQueue 非空或 terminate 为 true。在等待期间互斥锁被解锁以允许其他线程操作 taskQueue。当 taskQueue 非空或 terminate 为 true 时线程会继续执行并且互斥锁会重新上锁。 这是一个典型的生产者-消费者模型的实现其中 taskQueue 是任务队列terminate 是一个标志指示线程是否应该终止。 下面是一个简化的示例演示了如何使用这行代码 #include #include #include #include #include condition_variable #include class ThreadPool { public: ThreadPool(size_t numThreads) : terminate(false) { for (size_t i 0; i numThreads; i) { threads.emplace_back(ThreadPool::worker, this); } } ~ThreadPool() {{std::unique_lockstd::mutex lock(mutex);terminate true;}condition.notify_all();for (std::thread thread : threads) {if (thread.joinable()) {thread.join();}} }void enqueueTask(std::functionvoid() task) {{std::unique_lockstd::mutex lock(mutex);taskQueue.push(task);}condition.notify_one(); }private: void worker() { while (true) { std::functionvoid() task; { std::unique_lockstd::mutex lock(mutex); condition.wait(lock, this { return !taskQueue.empty() || terminate; }); if (terminate taskQueue.empty()) { return; } task taskQueue.front(); taskQueue.pop(); } task(); } } std::vectorstd::thread threads; std::queuestd::functionvoid() taskQueue; std::mutex mutex; std::condition_variable condition; bool terminate;}; int main() { ThreadPool pool(4); pool.enqueueTask([] { std::cout Task 1 executed\n; }); pool.enqueueTask([] { std::cout Task 2 executed\n; }); pool.enqueueTask([] { std::cout Task 3 executed\n; }); pool.enqueueTask([] { std::cout Task 4 executed\n; });std::this_thread::sleep_for(std::chrono::seconds(2));return 0;} 在这个示例中ThreadPool 类创建了一个包含四个线程的线程池。每个线程在等待 taskQueue 中有任务时会处于等待状态。当有新任务加入队列时线程会被唤醒并执行任务。程序在主线程中添加了四个任务并让线程池处理这些任务。
http://www.zqtcl.cn/news/996064/

相关文章:

  • 森马网站建设情况网站推广中应注意哪些事项
  • 简单网站vs2008不能新建网站
  • 牌具做网站可以吗海外广告投放公司
  • 响应式单页网站模板宁波企业自助建站
  • 网站广告收费标准装饰设计公司起名
  • 网站开发人员构成中国兰州网官网
  • 网站设计的提案旅游网站建设风格
  • 成都网站建设的公司做高大上分析的网站
  • 专业企业网站建设公司成都的网站
  • 广东省建设教育协会官方网站首页怎么设置wordpress头像
  • 图书网站建设论文页游中心
  • 建网站的流程及注意事项任务网站建设
  • 河北邯郸做网站的公司哪家好辽源市住房和城乡建设局网站
  • 网站系统建设技术服务费安康市网站建设
  • 网络运行管理系统seo关键词优化方法
  • 西安学校网站建设价格徐州网页关键词优化
  • 上海哪个网站能应聘做家教的营销网站中最重要的部分是
  • 一个设计网站多少钱WordPress的简约博客主题
  • 普通的宣传网站用什么做济南市工程建设技术监督局网站
  • 合肥网站建设公司还有不dw如何制作表格网页
  • 讯美智能网站建设自己域名做网站
  • 自己做网站优化韩国外贸平台
  • 齐河建设局网站长沙市住房和建设局官方网站
  • 萧山区住房和城乡建设局网站wordpress网站合并
  • 做背景网站网站建设与维护制作网页
  • 网站建设公司知名营销型企业网站项目策划表
  • 写作网站哪个最好企业培训机构有哪些
  • 江苏省水利工程建设局网站域名不备案可以正常使用吗
  • 对网站开发语言的统计网站内容建设包括什么
  • 西安高端网站建设怎样开公司