多线程
黑塞123
这个作者很懒,什么都没留下…
展开
-
c++ threadpool
ThreadPool c++17采用多线程多对列,每个线程控制一个队列,替代老的多个线程公用一个队列。将任务拆分多个下发给每个线程,每个线程掌管 M(tasks) / N(threads)个任务M(tasks) / N(threads)个任务 公用一个队列。减少竞争。使用方法:初始化线程池 ThreadPool pool(4); //4个thread std::vector<std::future<int>>vec;添加任务for(int i =0;原创 2022-01-15 20:46:44 · 1756 阅读 · 0 评论 -
线程(三):条件变量
条件变量的作用在线程中, 如果有这麽一种情况, 生产者,消费者.假设用互斥锁的话, 线程一: 不断的写入数据, 线程二 不断的读取数据, 那么线程二基本是一个轮询, 不断的加锁,解锁,判断数据. 不断的轮询的结果, 浪费性能. 解决办法, 那就是间隔sleep 一定的时间,但是当条件满足的时候, 线程二还卡在sleep. 如果实时性高的话, 那就不是很理想.用到的知识点:std::mute...原创 2020-03-01 00:20:52 · 323 阅读 · 0 评论 -
线程(二): 线程间共享数据--互斥锁
本文讲解两个知识点:一: 互斥锁的应用场景(什么情况下使用)二: 互斥锁的几种用法:知识点一:多线程编程中最常见的问题是什么? 资源竞争当然各个线程之间的数据是相互 独立的, 互不影响那当然不会出现上述情况.反之就会发生资源抢占.以实际项目举例:本地有15w 个文件 需要上传到服务器,假设开辟三个子线程,每个线程5W个文件, 主线程阻塞等待.有的人会问,这三个线程之间是独立的并没...原创 2020-02-07 23:29:54 · 461 阅读 · 0 评论 -
线程(一): 线程管理以及简单封装
线程调用的4个方法:首先先看thread 函数,这里优先介绍,也是最常用的 4 template<typename _Callable, typename… _Args>thread 参考文档. 1: thread() noexcept = default; // _GLIBCXX_RESOLVE_LIB_DEFECTS // 2097. packag...原创 2020-02-05 20:39:09 · 235 阅读 · 0 评论