我想在打印“Hello”后创建一个线程并从那里发出信号。想要连接正常功能或打印“世界”的其他线程的信号。如何在Windows c ++中做到这一点?基本上是信号/插槽通信的新手。
答案 0 :(得分:3)
有两个完全不同的问题:
上次我和他们混在一起后,我后悔了。绝对建议单独解决;无论如何,大多数信号处理程序可能都是同步的。
std::function
,它可以用作委托,为信号创建它们的集合并不是那么多工作。处理来自单独线程的连接/断开连接需要更多工作,因为自动断开对象销毁。 Boost为C ++ 03环境提供了兼容的实现。线程完全控制它执行的内容。因此,如果您想在另一个线程中执行某些操作,则需要在其中运行事件循环。由于您通常只能运行一个事件循环,因此您必须使用GUI库附带的那个(除了从线程处理GUI完成某些事情之外,没有太多理由想要在不同的线程中运行某些GUI库作为大多数GUI库是不是线程安全的。)
Qt允许您指定在连接信号时运行处理程序的线程。在其他框架中,您可能必须向事件循环发送一些消息。您可以使用std::function
指定要执行的内容。