3
我在vxworks手册中发现了以下内容,并想知道为什么会出现这种情况。Linux/vxworks信号
信号做什么类型的事情使他们不受欢迎?
在实际应用中,信号是 最适合用于错误和异常处理 ,而不是一个 通用任务间通信 。
我在vxworks手册中发现了以下内容,并想知道为什么会出现这种情况。Linux/vxworks信号
信号做什么类型的事情使他们不受欢迎?
在实际应用中,信号是 最适合用于错误和异常处理 ,而不是一个 通用任务间通信 。
与信号的主要问题是处理程序是基于每个进程/内存空间基础注册的信号(在VxWorks中,内核表示一个存储器空间,并且每个RTP是不同的存储器空间)。
这意味着无论线程/任务上下文如何,都会执行相同的信号处理程序(对于给定的进程)。如果您的信号处理程序表现不好,这可能会导致一些副作用问题。
例如,如果你的信号使用一个互斥体的保护共享资源,这可能会导致讨厌的问题,或者至少,意外的行为
Task A Task B Signal Handler Take Mutex ... Gets preempted does something .... <SIGNAL ARRIVES>----->Take Mutex (blocks) resumes .... Give Mutex ----->Resumes Handler
我不知道上面的例子中真正传达了我正在努力。 以下是信号的一些其他特性:
请注意,以上仅适用于通过kill调用发送的异步信号。
异常会产生一个同步信号,在当前上下文中马上执行。