阻塞直到 boost::signal 被调用

发布于 2024-10-27 19:53:17 字数 209 浏览 1 评论 0 原文

有没有一种简单的方法来等待 boost::signal 被调用?我有一个在 GUI 中的每个绘制周期上调用的信号,我想要一个不同的线程来调用一个函数,然后等待下一个绘制周期(当再次调用该信号时,以便我知道该函数的结果已应用)。

我认为一种解决方案是设置与该信号到另一个函数的连接,该函数将抛出自定义事件并具有原始函数块,直到它获取该事件。然而,这似乎不是最优雅的解决方案。有更好的办法吗?

Is there an easy way to wait for a boost::signal to be called? I have a signal that is called on every draw cycle in a GUI and I want a different thread to call a function and then wait for the next draw cycle (when the signal is called again so that I know the result of the function has been applied).

I think one solution would be to setup a connection with that signal to another function that will throw a custom event and have the original function block until it gets that event. However, that doesn't seem like the most elegant solution. Is there a better way?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

长发绾君心 2024-11-03 19:53:17

您需要为此使用信号吗?

螺纹A:拉丝
线程 B:其他线程正在执行一些响应工作,

线程 B 可能会因某个条件而阻塞。线程 A 将此条件设置为 true,这允许线程 B 执行某些工作。线程 B 将条件设置为 false 并在此条件下阻塞。

如果您确实需要使用 boost::signal,您可以将其连接到将该条件设置为 true 的函数。

Do you need to use signals for this?

Thread A: Drawing thread
Thread B: Other thread doing some work in response

Thread B could block on a condition. Thread A sets this condition true, which allows thread B to do some work. Thread B sets the condition to false and blocks on this condition.

If you really need to use the boost::signal you could connect it to a function that sets this condition true.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文