并发编程沉思录
任务、资源、依赖、一致性、管理
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等;
状态的管理工具:线程间通信、同步工具等;
并发编程实际上是一个运行时复杂系统的管理工具。
任务的整体性(协调)、任务的可分割性;
任务的状态;
资源:读写资源、排他资源、计数资源;
一致性:
资源状态的一致性;
计算结果的一致性;
并发编程是对并发计算的管理;
任务(整体与部分)、资源、状态(结果)、
分工、竞争、协作;
模型、同步工具、同步工具;
线程、锁、
我思故我在