多线程下的并发理解

写多了多线程程序,对程序的串行与并行和操作系统的并发概念会有点混乱,现在整理一下概念。

并发:

  •   并发原本是处在操作系统层次上,讲的是处理器的逻辑核可以在同一个时间段处理多个任务
  •   在多个任务上采用比如:时间片轮转法,多级反馈优先队列,高响应比等的算法来协调对每个任务的处理时间。
  •   这里的任务是指运行在操作系统范围内的进程或者线程。对于执行实体在干什么并不关心。事实上,执行实体干的活就是程序的逻辑。

并行与串行:

  •   这两个概念应用在编程范围内比较恰当,当然也非常适用于硬件指令流水线。
  •   与并发最大的区别在于立足点不同,并发站在操作系统上看是不同进程实体代表的指令流的来回调度切换。
  •   并行站在程序逻辑上看是多个程序不相干指令流的走向或者逻辑结构,这一层并不考虑指令调度问题。更严谨的说是不考虑和其他程序的指令调度问题。
  •   并行指开启多个线程,执行多个不同的函数或任务,重点在执行的函数和任务上,对于线程运行在哪不关心,视不同情况可能会访问到共同的数据集,此处需要做互斥。
  •   串行在此指程序或任务的执行指令在任何一个时间点上只被一处执行且从程序执行开始到结束,当前活动空间内不存在其他并行的指令流,当然也就不存在数据竞争问题。

当前说法比较粗糙,再思考思考不断完善

posted @ 2017-06-27 22:42  blackwall  阅读(293)  评论(0编辑  收藏  举报