赞 | 86 |
VIP | 0 |
好人卡 | 1 |
积分 | 136 |
经验 | 14048 |
最后登录 | 2021-1-24 |
在线时间 | 2753 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 13562
- 在线时间
- 2753 小时
- 注册时间
- 2014-10-4
- 帖子
- 756
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
用tbb的parallel_for用的非常舒服
然后某天精神不太正常就想自己写一个玩
然后断断续续写了一个多月..
最初对它的认识 大概就是ruby each 的多线程版本
于是马上有了最初版
创建几个线程 各自取任务 做任务 任务完成退出
开始啥也不懂 就想到什么写什么 效率 emmm
然后推翻 重来 推翻 重来 推翻 重来
陆陆续续有新想法新发现 那就推翻 重来
我也不记得到底改了几次
陆续加入了线程池 无锁结构 防伪共享 主线程参与任务自旋等待同步 任务聚块
等等等我现在觉得一点不新鲜不能再熟悉的东西
然后惊觉
parallel_for 其实主要就是线程池加任务聚块
parallel_reduce 也是 以及许许多多其他的实现
于是目标转化为写好一个线程池
于是又开始写写改改
不想用std::function因为它在传入functor太大时会申请内存来保存它
然后就想那我就写个类似的封装 但只保存functor及它operator()的地址 不复制它本身
可是参数接收和反传咋办呢 总不能传指针让它自己解包吧..
最后是可变参数模板解决了
其实开始我也是用可变参数模板的
可是我不懂 ... 的用法 .......
写完了线程池然后加上聚块就好了
效率也非常好
当初改的死去活来
现在却觉得如此清晰
皆因收获良多
此贴留念
|
评分
-
查看全部评分
|