R..*_*R.. 21
首先,请注意Ben的答案是正确的.据我所知,POSIX中实时信号的全部目的是作为AIO的实时传送机制,消息队列通知,定时器到期和应用程序定义的信号(内部和进程间).
话虽如此,信号通常是一种非常糟糕的做事方式:
sigwait(或Linux signalfd扩展)而不是信号处理程序来处理信号,它们并不比其他IPC /通知机制更好,但仍然可能更糟.异步IO被忽略了设计不当的POSIX AIO API,只是创建线程更好的完成执行正常阻塞的IO和呼叫pthread_cond_signal或sem_post在操作完成时.或者,如果您可以承受一点性能成本,您甚至可以通过管道或套接字将正确读取的数据转发给自己,并让主线程进程异步 - 读取常规文件select或者poll像插槽/ 读取一样管道/ ttys中.
这是一个老问题,但仍然如此。
Linux 上 glibc (NPTL) 中的 POSIX 线程是使用两个实时信号实现的。它们对用户隐藏(通过调整最小/最大数字常数)。库调用必须传播到所有线程的所有事件(例如setuid)都是通过以下方式完成的:调用线程向所有线程发送信号以应用更改,等待确认并继续。
| 归档时间: |
|
| 查看次数: |
9110 次 |
| 最近记录: |