Linux中的阻塞调用和非阻塞调用,同步通信和异步通信

一 、阻塞调用和非阻塞调用

阻塞调用和非阻塞调用关注的是程序在等待调用结果(消息,返回值)时的状态。
阻塞调用是指调用结果返回之前,当前进程会被挂起。调用进程只有在得到结果之后才会返回。
非阻塞调用是指在不能立刻得到结果之前,该调用不会阻塞当前线程。

二 、同步通信和异步通信

同步通信和异步通信关注的是消息的通信机制。

同步通信,指在发出一个调用的时候,在没有得到结果之前,该调用就不返回。但是一旦调用返回,就会得到返回值。也就是说是调用者主动等待这个调用的结果。

异步通信,指在发出一个调用的时候,该调用立刻返回,所以没有返回结果。换句话说,当一个异步过程调用发出之后,调用者不会立刻得到结果。而是在调用发出之后,被调用者通过状态通知调用者。 大白话: 异步通信就是调用者调用之后就去干别的事情了,等被调用者那边好了再来告诉调用者;同步通信就是调用者发起调用之后就一直在原地等待。

三、结合两概念进行分析

在进程通信 [3] 层面, 阻塞/非阻塞, 同步/异步基本是同义词, 但是需要注意区分讨论的对象是发送方还是接收方。
发送方阻塞/非阻塞(同步/异步)和接收方的阻塞/非阻塞(同步/异步) 是互不影响的。
在 IO 系统调用层面( IO system call )层面, 非阻塞 IO 系统调用 和 异步 IO 系统调用存在着一定的差别, 它们都不会阻塞进程, 但是返回结果的方式和内容有所差别, 但是都属于非阻塞系统调用( non-blocking system call )
非阻塞系统调用(non-blocking I/O system call 与 asynchronous I/O system call) 的存在可以用来实现线程级别的 I/O 并发, 与通过多进程实现的 I/O 并发相比可以减少内存消耗以及进程切换的开销。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值