删除 - 理由:不是真的需要。
我的问题是:
boost::condition_variable.wait(lock)
作为堆栈,boost::asio::io_service
作为套接字。但是没有机制(我知道)允许我同时等待两个事件(轮询是不可能的)。 或者是吗? 答案 0 :(得分:1)
但是没有机制(我是 意识到)让我等待 两个事件同时进行(民意调查 是不可能的。或者是吗?
不是我知道的,并且不是没有轮询......你需要一个线程来等待每个异步事件。您可以使用阻塞堆栈或类似于您所说的使用boost::condition_variable
阻塞,直到堆栈上有东西为止。 boost::asio::io_service
对于管理udp套接字非常有用,但在事件处理方面它并没有给你带来任何好处。
我真的不确定你要做什么......你说的话没有多大意义。我会尽力猜测你想要做什么,但我建议澄清这个问题。
<强>问题:强>
我真的需要使用main 线程通过组件发送数据 一个套接字或我可以从中执行此操作 新线程? (我认为答案是否定的, 但我不确定竞争条件 在插座上)
<强>答案:强>
您不必使用主线程通过给定组件的套接字发送数据。现在,根据您使用的套接字库,可能存在不同的限制:您可能只能在创建套接字的同一线程上发送数据,或者您可能能够从任何线程发送数据......它真的取决于套接字的实现。
<强>问题:强>
如何等待这两个事件?
答案:
你不能在同一个帖子中同时做两件事......说你有两个选择:
鉴于对您的问题的描述,您不清楚使用boost::condition_variable
和/或boost::asio::io_service
可以实现的目标。也许你应该给我们一个非常简单的代码示例,我们可以遵循。
<强>问题:强>
还有其他选择 我不是这个问题的解决方案 知道吗?
<强>答案:强>
总有一些替代解决方案,但很难说出目前对“问题”的描述可能会有什么替代方案。我认为你应该再次编辑问题,并专注于提供非常具体的例子,也许是一些伪代码等。
答案 1 :(得分:0)
切换到Windows并使用WaitForMultipleObjects,或者在Linux中实现此功能。它非常方便,然后你可以在同一个线程上做两件事。