我正在使用基于while(true)
阻塞函数的三个线程创建应用程序模型。
- 事件线程 - 等待用户输入,被 SDL_WaitEvent 阻塞
- Socked 线程 - 等待来自服务器的数据,被阻塞套接字阻塞。
- 渲染线程 - 从缓冲区渲染数据,而不是阻塞。
我在渲染线程时遇到了问题——我需要一个阻塞函数,例如,它会阻塞直到某个绘制事件(由我定义并在其他两个线程之一中调度)发生。
但我不知道阻塞函数是如何工作的。当然,我可以创建一个sleep()
循环,但这样的循环固定 FPS 占用资源,即使没有发生任何事情(我已经在此处详细阐述了该主题)。另一方面,它不会立即显示数据。这对 GUI 应用程序不利。