0

我喜欢 unbounded_buffer 的便利性,但我也想在并发运行时一无所知的线程上使用这个类。在我的测试中,它似乎工作正常。这种方法有什么潜在的问题吗?

4

1 回答 1

0

以下是我从 MSFT 收到的关于该问题的信息:

  1. 是的,您可以在使用 CreateThread 手动创建的线程上使用消息块(如 unbounded_buffer)。

  2. 消息不能跨越 dll 边界,因为它的分配和删除必须发生在同一个 dll 中。一些消息块(如转换器)分配新消息。所以他们也面临同样的问题。unbounded_buffer> 非常好用,只是它不能解决上述问题。type 模板参数是指消息中的有效负载类型(即消息)。这不是信封的类型。

  3. 在稳定状态下,数据流网络的吞吐量非常好。性能损失的主要来源是在建立网络时消息块的链接和取消链接。在 Visual Studio 2010 中,send 和 asend 等消息启动命令会遭受这种性能损失。我们已经在即将发布的 Visual Studio 中解决了这个问题。没有计划将修复移植到 VS2010。一种潜在的解决方法是实现一个始终连接到数据流网络的简单 ISource 消息块。使用此块向网络发起消息(agents.h 中的 _Originator 是 ISource 块的示例)。

于 2012-06-27T17:45:11.130 回答