linux基础内功2--- 互斥与并发

1、同步、异步、堵塞和非堵塞

并发:多个进程同时运行,即为并发。

互斥:分布在不同进程之间的若干个程序片段,规定当某个进程运行其中一个程序片段时,其他进程不能运行它们之中任一个程序片段,只能等到该进程运行完这个程序片段后才能开始运行。同一资源同个时间只有一个访问者可以进行访问,其他访问者需要等前一个访问者结束才可以访问该资源,但互斥无法限制访问者对资源访问顺序,即访问是无序。

同步:分布在不同进程之间的若干个程序片段,它们的运行必须严格按照规定的某种先后次序来运行,这种先后次序依赖于要完成的特定的任务。所以同步就是互斥的基础上,通过其他机制实现访问者对资源的有序访问。

同步是一种更为复杂的互斥,互斥是一种特殊的同步。

以发送方发出请求,接收方读取文件内容为例

同步堵塞:

发送方发出请求(同步),等待接收方响应,接收方开始读取数据,如果不能马上读取结果就一直等,直到获取结果再响应发送方,等待期间不能做任何事。

同步非堵塞:

发送方发出请求(同步),等待接收方响应,接收方开始读取数据,如果不能马上读取结果,就立即返回,接收方继续做其他事情。此时并未响应发送方,发送方一直等待。直到IO操作(这里是读取文件)完成后,接收方获得读取结果响应发送方,接收方才可以进入下次请求。

异步堵塞:

发送方发出请求,不等待响应(异步),接受方开始读取数据,如果不能马上读取结果,就一直等待,直到等到返回结果后,才响应发送方,期间不能进行其他操作。(堵塞)

你可能感兴趣的:(大公司校招面试宝典(嵌入式),linux)