我正在为跨平台应用程序开发一个小框架(当然,出于学术目的),它需要优雅地处理非UI和UI程序。我正在调查是否可以在每个窗口中使用OS消息/事件循环。在这一点上,我并不在乎它是否是一个好主意,只要它完全可能。
现在,在Windows上,虽然我打电话给WinMain,但非UI(呃,无窗口)程序仍然可以通过消息循环工作。在这种情况下,主线程处理所有将其HWND参数设置为nullptr的消息(未发送到特定窗口的消息),并且每个窗口都在其自己的线程中,并在其自己的消息循环中调用其自己的wndproc。 / p>
我相信在X11中应该可以使用类似的设置,每个线程使用一个xcb_connection_t(因此每个窗口)。假设这是正确的,处理“主”非UI线程的好方法是什么?如果它什么都不做,程序将立即退出,无论有多少其他线程正在运行其X事件循环。我想保留这部分X免费。我已经读过有关暂停,sigsuspend等的内容。但我不确定这些是否适合这个简单的目的。