[英]How to emit signal from a thread and a seperate function can connect to the signal?
我想创建一个线程并在打印“ Hello”后从那里发出信号。 要连接到正常功能或打印“世界”的另一个线程的信号。 如何在Windows C ++中做到这一点? 基本上是信号/插槽通信的新功能。
有两个完全独立的问题:
上次我将它们混合在一起后悔。 绝对建议单独解决; 无论如何,大多数信号处理程序都可能是同步的。
std::function
,可以将其用作委托,为信号创建它们的集合不是很多工作。 尽管在对象破坏时自动断开连接,但是处理来自单独线程的连接/断开连接还需要更多的工作。 Boost为C ++ 03环境提供了兼容的实现。 线程完全可以控制其执行的内容。 因此,如果要在另一个线程中执行某些操作,则需要在那里运行一个事件循环。 由于您通常只能运行一个事件循环,因此您必须使用GUI库附带的事件循环(除了从大多数处理GUI的线程中处理GUI之外,无需在其他线程中运行某些东西的原因就不多了。 不是线程安全的)。
Qt允许您指定连接信号时要在其中运行处理程序的线程。 在其他框架中,您可能必须向事件循环中发送一些消息。 您可以使用std::function
指定要执行的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.