设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 154|回复: 1

[随意闲聊] 记写parallel_for的经过

[复制链接]

Lv4.逐梦者

梦石
0
星屑
11028
在线时间
2364 小时
注册时间
2014-10-4
帖子
694

R考场第七期纪念奖

发表于 2020-2-19 04:08:56 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
用tbb的parallel_for用的非常舒服
然后某天精神不太正常就想自己写一个玩
然后断断续续写了一个多月..

最初对它的认识 大概就是ruby each 的多线程版本
于是马上有了最初版
创建几个线程 各自取任务 做任务 任务完成退出
开始啥也不懂 就想到什么写什么 效率 emmm
然后推翻 重来 推翻 重来 推翻 重来
陆陆续续有新想法新发现 那就推翻 重来
我也不记得到底改了几次
陆续加入了线程池 无锁结构 防伪共享 主线程参与任务自旋等待同步 任务聚块
等等等我现在觉得一点不新鲜不能再熟悉的东西
然后惊觉
parallel_for 其实主要就是线程池加任务聚块
parallel_reduce 也是 以及许许多多其他的实现
于是目标转化为写好一个线程池
于是又开始写写改改
不想用std::function因为它在传入functor太大时会申请内存来保存它
然后就想那我就写个类似的封装 但只保存functor及它operator()的地址 不复制它本身
可是参数接收和反传咋办呢 总不能传指针让它自己解包吧..
最后是可变参数模板解决了
其实开始我也是用可变参数模板的
可是我不懂 ... 的用法 .......

写完了线程池然后加上聚块就好了
效率也非常好
当初改的死去活来
现在却觉得如此清晰
皆因收获良多
此贴留念

评分

参与人数 2+2 收起 理由
guoxiaomi + 1 精品文章
hyrious + 1 太…太强了

查看全部评分

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
374
在线时间
11 小时
注册时间
2020-3-3
帖子
38
发表于 2020-3-3 10:31:36 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2020-7-9 05:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表