研究操作系统中的进程间通信,我发现异步通信可以建立在同步通信的基础上。但是,我不清楚该怎么做。你能向我解释一下吗?
发布于 2018-02-18 16:10:23
首先,我认为我们需要很好地理解同步和异步这两个术语。
这些术语不是指进程之间通信的消息,而是指发送或接收此类消息的模型,该模型与进程中正在进行的计算有关。因此,相同的通信--相同的消息--可能是一个进程异步的,另一个进程是同步的。
同步I/O也称为阻塞I/O;异步I/O是非阻塞I/O。这些术语再次强调发送/接收相对于发送或接收进程的内部计算(而不是描述通信本身)的发送/接收方法。
如果您使用同步I/O发送或接收消息,则该进程将被阻塞,直到消息被完全发送或接收为止。因此,似乎很难将其转换为异步方法。
但是,您可以创建一个新线程,只用于执行I/O操作,而现有的主线程继续执行(S)。这样做提供了一个牺牲线程,它将阻塞同步I/O请求,而其他线程可以继续运行。因此,尽管在新线程中使用了阻塞I/O,但主/其他线程的I/O操作似乎是异步的。
(在没有线程的情况下,您可以对多个进程执行类似的操作。)
https://softwareengineering.stackexchange.com/questions/366158
复制相似问题