【发布时间】:2012-07-15 21:55:41
【问题描述】:
我正在尝试使用 C++ 中包含的异步代理库 (AAL) 来调用两个独立线程(另请参阅此处了解 AAL 描述 http://msdn.microsoft.com/en-us/library/dd492627.aspx)。代理库通过让您通过基于数据流而不是控制流的异步通信模型连接隔离组件,提供了共享状态的替代方案。数据流是指一种编程模型,当所有需要的数据都可用时进行计算;控制流是指按预定顺序进行计算的编程模型。
由于我不想等待来自一个代理的任意数据,我想使用 Concurrency::send() 和 Concurrency::try_receive()。 但是,我在实现 try_receive 方法时遇到了问题(可以在此处找到文档http://msdn.microsoft.com/de-de/library/dd470874.aspx)。
我目前的实现:
ISource<bool>& _source;
Concurrency::try_receive(_source, &Received,ITarget<CPlant*>::filter_method())
以 CPlant 作为我的数据发送回 _source-Message 来自的代理。 Agent1 使用 CPlant 类发送一个简单的布尔值“true”和 Agent2(包括上面提到的代码)响应。这适用于 Concurrency::receive(),但我不想阻止当前代理的进一步执行。
你知道为什么我会遇到类似的编译错误
1>c:\users\robert\tum\da\src\sim\anlagensim\anlagensim\main.cpp(57): error C2782: 'bool Concurrency::try_receive(Concurrency::ISource<_Type> &,_Type &,const ITarget<_Type>::filter_method &)' : template parameter '_Type' is ambiguous
1> c:\program files\microsoft visual studio 10.0\vc\include\agents.h(16553) : see declaration of 'Concurrency::try_receive'
1> could be 'int *'
1> or 'bool'
1>c:\users\robert\tum\da\src\sim\anlagensim\anlagensim\main.cpp(57): error C2780: 'bool Concurrency::try_receive(Concurrency::ISource<_Type> &,_Type &)' : expects 2 arguments - 3 provided
?
提前感谢您的帮助!
【问题讨论】:
标签: c++ parallel-processing share agents