最近想把写过的一个多线程程序整理一下,这个程序主要特点是有一系列的互相之间有依赖关系的task。于是在网上找相关类库

1,一类是简单的线程池了,这也是原本俺的做法。之前使用的是手工调度,代码实现的很蛋疼。
外面的lib有poco https://pocoproject.org/slides/130-Threads.pdf

3,微软的并行库
1)MS PPL (Parallel Patterns Library)之类的类库,感觉这里一类本质上和1没有大的分别
2)MS tpl (Task Parallel Library) ,是Dataflow,可以显式指明task之间的依赖关系
https://msdn.microsoft.com/en-us/library/hh228603(v=vs.110).aspx
http://blog.i3arnon.com/2016/05/23/tpl-dataflow/
3) MS Asynchronous Agents Library ,没研究,抽空看看

Update 20161220: 貌似大家对这个actor model不满意,他实现得不够完整,并且很久没有更新。 http://www.cnblogs.com/cutepig/p/6206114.html
https://msdn.microsoft.com/en-us/library/dd492627.aspx
https://msdn.microsoft.com/en-us/library/ff601928.aspx
4) MS Concurrency Runtime,没看过,有时间研究下
From stackoverflow, The concurrency runtime is a cooperative scheduling infrastructure也就是说需要task互相协作,如果某个task是io密集的,就不适合?
https://msdn.microsoft.com/en-us/library/ff601929.aspx
https://msdn.microsoft.com/en-us/library/dd504870.aspx
5) AMP https://msdn.microsoft.com/en-us/library/hh265137.aspx
6) MS CCR (Concurrency and Coordination Runtime)
https://msdn.microsoft.com/en-us/library/bb648752.aspx

more
https://msdn.microsoft.com/zh-cn/library/ff963546.aspx

3, 有人说过asyn, future之类,但这一类其实都没有优化task调度

6, actor model
貌似这是普遍的公认的并行处理方法,其好处是task互相隔离,通过发消息彼此通信实现同步

caf: https://www.actor-framework.org/ c++11的写法比较爽
caf读书笔记 http://www.cnblogs.com/zhejiangxiaomai, http://blog.csdn.net/xzwdev/article/details/41700001, http://wenku.baidu.com/view/7e2b6be16529647d2728528e.html, https://arxiv.org/pdf/1505.07368.pdf,https://pdfs.semanticscholar.org/9bc2/003f58a240143bcfdb1f58183e8a172b7d05.pdf,https://www.meetup.com/ACCU-Bay-Area/events/233766624/
Theron 写法有点蛋疼,但其实可以用c++11包一层的
SObjectizer

skynet https://github.com/cloudwu/skynet/wiki
https://github.com/i11cn/simple-cpp-actor

7,task dependency based c++ library
这一类稳定的类库比较少,很多都是用来写paper
其实可以在actor model包装一层函数实现这一类的用法

比如 SuperGlue: http://tillenius.github.io/superglue/ It's a C++98 header-only library for tasks with dependencies between them.
https://github.com/RichieSams/FiberTaskingLib
http://www.des.udc.es/~basilio/papers/Gonzalez13-DepSpawn.pdf

papers
http://www.ademiller.com/tech/reports/paraplop_2010_the_task_graph_pattern.pdf
8,intel 的类库
1)tbb
2)cnc (Concurrent Collections for C++)
https://icnc.github.io/api/tutorial.html
据说很不同,有空研究下

3)intel tbb-flow-graph
https://www.threadingbuildingblocks.org/tutorial-intel-tbb-flow-graph

9,hpx http://stellar.cct.lsu.edu/files/hpx-0.9.99/html/hpx/tutorial/examples/accumulator.html
没研究过
10,Spark
没研究过
11,相关资料
Stream processing https://en.wikipedia.org/wiki/Stream_processing
Dataflow programming
Actor model
Data-driven programming
Digital signal processing
Event-driven programming
Flow-based programming https://en.wikipedia.org/wiki/Flow-based_programming
Functional reactive programming
Glossary of reconfigurable computing
High-performance reconfigurable computing
Incremental computing
Parallel programming model
Partitioned global address space
Signal programming
Stream processing
Pipeline (Unix)
Yahoo Pipes

转载于:https://www.cnblogs.com/cutepig/p/6196119.html

C++多线程开发之actor model相关推荐

  1. iOS多线程开发之GCD(基础篇)

    总纲: GCD基本概念 GCD如何实现 GCD如何使用 队列和任务组合 一.GCD基本概念 GCD 全称Grand Central Dispatch(大中枢队列调度),是一套低层API,提供了⼀种新的 ...

  2. iOS多线程开发之NSThread

    一.NSThread基本概念 NSThread是基于线程使用,轻量级的多线程编程方法(相对GCD和NSOperation),一个NSThread对象代表一个线程,需要手动管理线程的生命周期,处理线程同 ...

  3. java actor_Java并发之actor模型

    Java并发之actor模型 Actor模型是一个概念模型,用于处理并发计算.它定义了一系列系统组件应该如何动作和交互的通用规则. 线程-对象模型的问题 锁和效率 OOP的核心特性是封装,封装规定对象 ...

  4. 苹果开发之Cocoa编程(原书第4版)

    <苹果开发之Cocoa编程(原书第4版)> 基本信息 原书名:Cocoa Programming for Mac OS X: Fourth Edition 作者: (美)希莱加斯(Hill ...

  5. 李洪强iOS开发之RunLoop的原理和核心机制

    李洪强iOS开发之RunLoop的原理和核心机制 搞iOS之后一直没有深入研究过RunLoop,非常的惭愧.刚好前一阵子负责性能优化项目,需要利用RunLoop做性能优化和性能检测,趁着这个机会深入研 ...

  6. 我的Java开发之路

    最近有一位小伙伴通过公众号给我留言, "我参加工作没多久,看着圈里的技术大牛,特别羡慕,也渴望成为技术大牛,想让您分享一下从小白到大牛是怎样练成的,我该如何提高自己" 首先,谢谢这 ...

  7. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  8. 高性能服务器开发之C++定时器

    高性能服务器开发之C++定时器 来源: https://www.cnblogs.com/junye/p/5836552.html 写这篇文章前搜了下网上类似的文章,有很多,所以笔者的这篇文章就不对定时 ...

  9. IOS开发之UI基础LOL英雄展示-15

    IOS开发之UI基础LOL英雄展示-15 // // ViewController.m // 15-英雄展示-单组数据 // // Created by 鲁军 on 2021/2/3. //#impo ...

最新文章

  1. fastjson 输出null值字段
  2. CentOS7升级版本
  3. “红色军团”崛起Gartner x86服务器虚拟化魔力象限
  4. java图像处理,彩色图像转灰度图的几种实现方式
  5. PostCSS自学笔记(二)【番外篇二】
  6. 服务器 风扇测试软件,图解服务器风扇安装的正确方法
  7. 服务器中文件设置密码,共享服务器文件权限怎么设置密码
  8. 利尔达NB-IOT的PSM和eDRX低功耗模式笔记
  9. 【bat批处理】常用bat批处理内部命令简介
  10. flash mx拖拽实例_Flash MX 2004 Professional的照片闪光器效果面板
  11. 整理:OJ系统及ACM测试题库大全
  12. 淘宝淘口令n年前算法
  13. 学校计算机采购清单表,附表:采购清单明细表.doc
  14. 14.Nor-Flash操作实例
  15. 【opencvsharp】opencvsharp_samples.core示例代码笔记
  16. Bouncy Castle使用(一)【开始】
  17. Java程序员应该搞懂的六个问题
  18. Redis 6.0新特性——ACLs
  19. 【Android App】实战项目之虚拟现实(VR)的全景相册(附源码和演示视频 可用于学习和大作业)
  20. 2.5寸硬盘和3.5寸硬盘的区别和适用场景

热门文章

  1. 误删文件怎么恢复?实用的方法
  2. linux 虚拟地址空间在哪,Linux虚拟地址空间
  3. 10个最好的免费读书网站 [转贴]
  4. linux 命令:uname 详解
  5. guns 功能菜单及主题设置
  6. JAVA基础学习---Markdown
  7. 一卡通综合管理平台中了后缀.[mr.hacker@tutanota.com]勒索病毒数据库能修复吗
  8. 和尚与尼姑雨中相遇后不得不说的故事 4
  9. 使用 Python 和 Streamlit 从 Excel 中进行 VLOOKUP
  10. 涉密计算机安全审计分析报告,计算机安全保密审计报告.doc