并发编程--综述

概述

并发编程:是一种现代计算机编程技术。可以是多进程编程多线程编程、还可以是编写分布式程序


主要思想

并发这个概念由来已久,其主要思想是:使多个任务可以在同一时间段内执行,以便能够更快地得到结果。

并发编程的思想来源于多任务操作系统,它允许同时运行多个程序。在早期的单用户操作系统中,任务是一个接一个运行的,完全串行。而多任务操作系统则允许终端用户同时运行多个程序,当一个程序不需要使用cpu的时候,系统会把该程序挂起或中断,以使其他程序可以使用cpu。

最早支持并发编程的计算机语言是汇编语言,不过那时候没有理论基础来支持这种编程方式,一个细微的编程错误就会使程序变得非常不稳定,并且对这种程序的测试也是几乎不可能的。


串行程序与并发程序

串行程序:特指只能顺序执行的指令列表

并发程序:可以被并发执行的两个或两个以上的串行程序的综合体

并发程序运行的方式:

  1. 允许其中的串行程序运行在一个或多个可共享的cpu之上
  2. 允许每个串行程序都运行在专为它服务的cpu之上

第一种方式也称为多元程序,它由操作系统内核支持并提供多个串行程序复用多个cpu方法。多元处理是指计算机中多个cpu共用一个存储器(内存),并且在同一时刻可能会有数个串行程序分别运行在不同的cpu之上。多元程序和多元处理是串行程序得以并发甚至并行运行的基础支撑


并发程序与并行程序

我们很容易把并发和并行两个概念混为一谈,但实际上有很明显的区别。

并发编程:是指被同时发起并执行的程序

并行程序:可以在并行的硬件上执行的并发程序

换句话说,并发程序代表了所有可以实现并发行为的程序,包含了并行程序


并发程序与并发系统

首先,并发程序属于程序,即使它被划分为很多部分,只要这些部分之间是紧密关联在一起的,并且可以看成一个整体,那么它就属于一个程序,也可以称之为一个内聚的软件单元。

另一方面,程序与程序之间可以通过协商一致的协议进行通信,并且他们之间是松耦合的,他们可以看作是一个系统而不是程序。

并发系统更有可能是并行的,因为其中的多个程序一般可以同时在不同的硬件环境上运行。因此,并发系统常常称为并行系统,与并发系统同义的一个更加流行的词是分布式系统


并发程序的内部交互

并发程序内部会被划分为多个部分,每个部分可以被看作是一个串行程序,这些串行程序之间可能会存在交互的需求。比如,多个串行程序可能都要对一个共享的资源进行访问。又比如,他们之间可能需要传递一些数据。在这种情况下,我们就需要协调他们的执行,这就涉及到同步。

同步的作用:是避免在并发访问共享资源时可能发生的冲突,以及确保有条不紊的传递数据。


并发编程的不确定性

串行程序所有代码的先后顺序都是固定的,而并发程序只有部分代码是有序的。也就是说,其中一部分代码的执行顺序并没有明确指定,这一特性被称为不确定性,这导致每次运行的代码执行路径都是不相同的,即使在输入数据相同的前提下。


编程难点

感觉编写并发程序困难主要有两个原因:

  1. 缺乏即非常适合开发应用程序又对并发编程有良好支持的语言
  2. 并发编程的理论相对较难

End

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值