Linux / vxworks信号

| 我在vxworks手册中遇到了以下内容,并且想知道为什么会这样。 信号会导致什么类型的事物使其不受欢迎?   在应用中,信号是最重要的   适用于错误和异常   处理,而不是为了   通用任务间   通讯。     
已邀请:
信号的主要问题是信号处理程序是在每个进程/内存空间的基础上注册的(在vxWorks中,内核代表一个内存空间,每个RTP是一个不同的内存空间)。 这意味着无论线程/任务上下文如何,都将执行相同的信号处理程序(对于给定的进程)。如果您的信号处理程序表现不佳,可能会导致一些副作用。 例如,如果您的信号使用互斥锁来保护共享资源,则可能会导致令人讨厌的问题,或者至少会导致意外行为   任务A任务B信号处理程序   服用Mutex    ...    被抢占                                 做某事                                  ....                                 <信号到达> ----->取互斥体(块)    履历表    ....    给互斥体                                                 ----->恢复处理程序 我不确定上面的示例是否真的传达了我想要的内容。 这是信号的其他一些特征: 在计划任务/流程之前,不执行处理程序。仅仅因为您发送了信号,并不意味着处理程序将立即执行 无法保证哪个Task / Thread将执行处理程序。进程中的任何线程/任务都可以运行它(无论哪个线程/任务先执行)。 VxWorks可以解决此问题。 请注意,以上内容仅适用于通过kill调用发送的异步信号。 异常将生成一个同步信号,该信号将在当前上下文中立即执行。     

要回复问题请先登录注册