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

【C++11】多线程常用知识

知识体系

在这里插入图片描述

thread

C++ thread中最常用的两个函数是join和detach,怎么选择呢,简单来说,如果希望等待线程结束,用join,如果希望异步执行,且不等待执行结果,那么就用detach;thread_local可以简单理解为一个线程级别的全局变量;线程id在调试多线程程序时是非常有用的东西;

C++11本身没有提供线程池;可以参考第三方的实现:https://github.com/progschj/ThreadPool

#ifndef THREAD_POOL_H
#define THREAD_POOL_H#include <vector>
#include <queue>
#include <memory>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <future>
#include <functional>
#include <stdexcept>class ThreadPool {
public:ThreadPool(size_t);template<class F, class... Args>auto enqueue(F&& f, Args&&... args) -> std::future<typename std::result_of<F(Args...)>::type>;~ThreadPool();
private:// need to keep track of threads so we can join themstd::vector< std::thread > workers;// the task queuestd::queue< std::function<void()> > tasks;// synchronizationstd::mutex queue_mutex;std::condition_variable condition;bool stop;
};// the constructor just launches some amount of workers
inline ThreadPool::ThreadPool(size_t threads):   stop(false)
{for(size_t i = 0;i<threads;++i)workers.emplace_back([this]{for(;;){std::function<void
http://www.lryc.cn/news/367678.html

相关文章:

  • 详解linux设备下的/dev/null
  • GPT-4 Turbo 和 GPT-4 的区别
  • 基于小波多分辨分析的一维时间序列信号趋势检测与去除(MATLAB R2018a)
  • Linux RedHat7.6操作系统的xfs格式化后,mount不生效
  • 高并发ping多台主机IP
  • 03 Linux 内核数据结构
  • 关于软件调用独显配置指引【笔记】
  • 正大国际期货:什么是主力合约?
  • codeforces round 949 div2
  • 分享美好,高清无阻 - 直播极简联网解决方案
  • 贪心算法-加油站
  • 【ArcGIS微课1000例】0116:将度-分-秒值转换为十进制度值(字段计算器VBA)
  • 【中国开源生态再添一员】天工AI开源自家的Skywork
  • 【机器学习300问】109、什么是岭回归模型?
  • FJSP:烟花算法(FWA)求解柔性作业车间调度问题(FJSP),提供MATLAB代码
  • C++11 列表初始化(initializer_list),pair
  • Python3 笔记:字符串的 startswith() 和 endswith()
  • Web前端安全问题分类综合以及XSS、CSRF、SQL注入、DoS/DDoS攻击、会话劫持、点击劫持等详解,增强生产安全意识
  • 1.单选题 (2分)下列关于脚本的说法不正确的是( )。本题得分: 2分正确答案: A2.单选题 (2分)软件测试自动化的局限性不包含( )。本题得分: 2分
  • 【Docker系列】跨平台 Docker 镜像构建:深入理解`--platform`参数
  • 力扣1248.统计优美子数组
  • AI2THOR 2.1.0使用教程
  • 在Nginx中配置php程序环境。
  • !力扣70. 爬楼梯
  • Spring boot+vue前后端分离
  • Python基础总结之列表转字符串
  • 二分【1】二分查找框架 查找指定元素
  • Python 中如何使用 lambda 函数
  • 关于焊点检测(SJ-BIST)模块实现
  • 关于修改Python中pip默认安装路径的终极方法