“信号程序设计”是一个常用术语,指的是一种计算机程序,其主要功能是响应状态变化或用户输入产生的信号或事件。几乎是计算机系统的任何部分,从外围设备到操作系统本身,可以生成一个信号,该信号可以被应用程序捕获然后进行...
“信号程序设计”是一个常用术语,指的是一种计算机程序,其主要功能是响应状态变化或用户输入产生的信号或事件。几乎是计算机系统的任何部分,从外围设备到操作系统本身,可以生成一个信号,该信号可以被应用程序捕获然后进行处理。在许多形式中,信号编程类似于事件驱动编程。信号编程的一些最常见的用途是使用图形用户界面(响应用户输入)、网络通信和捕获和处理特定的低级程序系统信号。计算机程序设计中的信号可以定义为消息、事件或中断,这取决于它的来源、系统结构甚至程序员的偏好。广义地说,它是某种状态或数据段发生变化的指示器,它有时还伴随着关于已经发生的变化的附加信息,当用户按下一个键时,信号可以由诸如监视器之类的硬件产生,当发生垂直回溯时,当内存分配过程中出现页面错误等情况时,甚至可以从操作系统中执行。在一个应用程序中,信号编程可以采用多种类型的架构,但其中最常见的是侦听器或观察者模型。在这种方法中,一段用户定义的代码可以以某种方式传递给信号处理程序,通常是在操作系统中,然后调用这段代码来处理与函数所寻找的相匹配的任何信号。函数可以处理的信号类型通常由一个称为信号掩码的变量决定,所以有些信号不会被传递到没有被设计来处理它们的例程,第二种类型的信号编程包括有一个程序来实现一个接受传入信号的队列这个队列在程序的主执行循环中被轮询,一旦有信号进入队列,程序就会做出反应。然后每个信号都可以进行逻辑排序、处理,忽略或传递给另一个进程。当使用并发进程或多线程应用程序时,信号编程可能会出现一些困难。例如,如果两个独立的线程在监听两个独立的用户输入设备生成的信号,则可能会出现复杂情况,或者来自两个网络套接字。如果两个用户同时尝试对某些数据进行更改,则程序数据可能会失去同步,并且对每个用户的显示都不同。使用线性队列或实现线程同步方法可以帮助防止这种情况
-
发表于 2020-08-07 14:05
- 阅读 ( 750 )
- 分类:电脑网络