Gtkmm中的非阻塞信号处理程序

时间:2019-01-13 12:53:17

标签: c++ multithreading gtkmm

对于我正在制作的Gtkmm应用程序,当选择ListBoxRow中的一行时,回调需要启动一个while循环,该循环将无限期地运行。假设当特定变量设置为false时,while循环结束。

问题是,我当前的处理程序(当它启动while循环时)完全阻塞了主线程,从而阻塞了与GUI的任何交互。

我认为我可以使用线程来解决此问题(例如,从处理程序中启动一个新线程,并在该线程中启动while循环),但是我预见到了诸如此类的问题:

  • 将能够创建多个线程(通过选择多于1行,而不是同时运行,而是在另一个线程运行时),那么我将如何存储这些线程?
  • 如果将线程存储在矢量对象中,我如何知道要加入主线程的线程以及何时加入主线程?

我认为这一定是一个相当普遍的问题,所以Gtkmm或其他任何工具是否提供了一种将处理程序作为非阻塞函数运行的方法,或者有这种效果的方法?

0 个答案:

没有答案