C 什么是异步信号?

C 什么是异步信号?,c,asynchronous,signals,C,Asynchronous,Signals,维基百科中的两个定义: 在计算机科学中,异步I/O或非阻塞I/O是一种形式 允许其他处理继续进行的输入/输出处理 在传输完成之前 信号是应用程序中进程间通信的一种有限形式 Unix、类Unix和其他兼容POSIX的操作系统。信号 是向进程或特定进程发送的异步通知 在同一进程中执行线程,以便将 发生了 我真的不明白这是什么意思: 信号是发送到进程的异步通知 这是否意味着,就像I/O一样,一个信号被发送到一个进程,而发送该信号的进程不等待接收该信号的进程的返回值,而是继续运行 如果一个信号是同步的,

维基百科中的两个定义:

在计算机科学中,异步I/O或非阻塞I/O是一种形式 允许其他处理继续进行的输入/输出处理 在传输完成之前

信号是应用程序中进程间通信的一种有限形式 Unix、类Unix和其他兼容POSIX的操作系统。信号 是向进程或特定进程发送的异步通知 在同一进程中执行线程,以便将 发生了

我真的不明白这是什么意思:

信号是发送到进程的异步通知

这是否意味着,就像I/O一样,一个信号被发送到一个进程,而发送该信号的进程不等待接收该信号的进程的返回值,而是继续运行


如果一个信号是同步的,那么发送过程会等待返回值吗

在我看来,您在维基百科文章中强调的陈述过于笼统,无法帮助我们了解“幕后”发生了什么。例如,关于回调的实现,请看以下部分:

指向函数的指针

捕捉信号

在发送信号时,接收过程将执行 指定地址的信号捕获功能。回国后 从信号捕捉功能开始,应恢复接收过程 在中断点执行


在我看来,您在Wikipedia文章中强调的声明过于笼统,无法帮助您了解“幕后”正在发生的事情。例如,关于回调的实现,请看以下部分:

指向函数的指针

捕捉信号

在发送信号时,接收过程将执行 指定地址的信号捕获功能。回国后 从信号捕捉功能开始,应恢复接收过程 在中断点执行

看起来“异步”似乎可以被忽略

信号是发送给进程或同一进程内特定线程的异步通知,用于通知它发生的事件

信号接收方不知道发送过程是继续还是等待。这对接收者来说也不重要(除非在协议中“同意”发送者等待或继续,可能由接收者指定响应时间限制)

另一种观点可以是:

  • 异步事件可能意味着在接收方处理第一个事件之前,可以从发送方接收更多相同或不同的事件

  • 同步事件可能意味着在接收方处理之前,不会从发送方接收到相同类型的事件。(不过,可能会从发送方接收到其他类型的同步或异步事件。)

似乎事件的同步性声明只与接收者能从发送者那里得到什么相关,但我怀疑维基百科的定义是指发送者阻止/继续其处理,这对接收者来说并不重要

这将如何转化为多个发送方将同一类型的同步事件发送给单个接收方?

看起来“异步”似乎可以忽略不计

信号是发送给进程或同一进程内特定线程的异步通知,用于通知它发生的事件

信号接收方不知道发送过程是继续还是等待。这对接收者来说也不重要(除非在协议中“同意”发送者等待或继续,可能由接收者指定响应时间限制)

另一种观点可以是:

  • 异步事件可能意味着在接收方处理第一个事件之前,可以从发送方接收更多相同或不同的事件

  • 同步事件可能意味着在接收方处理之前,不会从发送方接收到相同类型的事件。(不过,可能会从发送方接收到其他类型的同步或异步事件。)

似乎事件的同步性声明只与接收者能从发送者那里得到什么相关,但我怀疑维基百科的定义是指发送者阻止/继续其处理,这对接收者来说并不重要


这将如何转化为多个发送方向单个接收方发送相同类型的同步事件?

信号是异步的,因为线程可能在执行过程中的任何点接收信号。这与代码中所有其他内容的同步性形成了对比:一条语句紧跟着另一条语句,在函数调用之后,您期望一个值,该指令紧跟着之前的指令,等等。。。你明白了。信号处理程序可以随时开始执行(通常会中断当前流的执行,直到它完成)


问题在于,这一段没有提到相同的异步术语:它指的是可能“在后台”执行的非阻塞调用,允许当前线程在等待接收响应时执行其他任务(请注意,此接收是如何以信号相同的方式异步的).

信号是异步的,因为线程可能在处接收信号