动机:
我正在编写一个处理所有可能的通信渠道的应用程序 以统一的方式,即通过终端、串行接口输入/输出, 图形用户界面(xcb | win32),通过套接字的 Web 界面。
问题:
我需要一些机制来: a) 让我的主应用程序循环睡眠或阻塞(以节省 CPU 时间); b) 一旦数据到达任何通道就再次唤醒它。
有什么想法吗? 谢谢你。
解决方案:
1 个阻塞呼叫:
2 非阻塞调用:
3 选择:
4 libuv(来自 Node.js):
5 每个通道一个线程并睡眠:
每个通道 6 个线程,暂停或 sigsuspend 以及系统信号唤醒: