我正在为 Windows 编写一个多线程应用程序。它有一个后台线程/线程来生成对象,这些对象被馈送到 UI 线程中。当没有工作时,我希望 UI 线程休眠。要实现线程之间的同步,我可以想到多种选择。但是,我想知道在上下文切换方面每个原语的夸克是什么。
后台线程可能希望连续运行,并希望在准确的时刻唤醒 UI 线程。
条件变量/信号量:我可以使用共享内存来传递数据和 cond.var 或信号量来同步。在那种情况下,上下文切换何时发生?它是在我发出信号的那一刻发生还是在线程的量子结束之后发生。一个比另一个好吗?
套接字:我可以在每个线程中运行服务器和客户端,并且可以创建流而不是共享内存。我认为这里的上下文切换会在时间量结束的那一刻发生。
还有其他选择吗?
谢谢