并发编程沉思录
任务、资源、依赖、一致性、管理
管理
线程、抽象
分解
复用
并发编程实际上是一个运行时复杂系统的管理工具。
任务处理模型:
事件、线程
事件消费模型(线程复用模型)
1、无复用—需要多少创建多少;
2、线程池复用—通过线程状态复用;
3、线程(事件)循环复用;
调度管理:
1、调度到线程上;
2、调度到线程的消费队列;
3、调度到管理队列上,管理队列再进行派发。
依赖管理:
资源依赖管理:锁
状态依赖管理:通信
线程无关抽象;
无锁化处理:
线程的状态:
运行以后再无start;只能通过循环来维持生命。
分层模型
一、基础分层
线程层
控制层
资源层
二、线程池模型分层
应用层
管理层
线程层
控制层
资源层
应用层
表示层
会话层
线程层
控制层
资源层
In computer science, concurrency refers to the ability of different parts or units of a program, algorithm, or problem to be executed out-of-order or in partial order, without affecting the final outcome.
多任务基于共享的资源同时执行,输出一致的结果。
1、并发编程是面向task和事务的编程;
2、并发编程的核心是协调资源:计算、内存、io;
3、并发编程模型;
4、并发编程的目标是保证结果的一致性和提高利率;
并发编程世界观:
任务:可分解吗?流水线吗?组装吗?货物拉取型?
资源:任务有基于自愿的相互依赖吗?
任务和资源决定模型;
并发编程的核心要素:任务、资源、(状态)结果
在此基础上衍生出:
任务的管理工具:线程池、actor、gcd、group等;
资源的管理工具:锁、mvcc等;
状态的管理工具:线程间通信、同步工具等;
并发编程实际上是一个运行时复杂系统的管理工具。
任务的整体性(协调)、任务的可分割性;
任务的状态;
资源:读写资源、排他资源、计数资源;
一致性:
资源状态的一致性;
计算结果的一致性;
并发编程是对并发计算的管理;
任务(整体与部分)、资源、状态(结果)、
分工、竞争、协作;
模型、同步工具、同步工具;
线程、锁、
并发与计算机
并发是对cpu复用的抽象。
计算性并发:cpu+mem;
IO性并发:网络、文件、标准输入;
并发和异步