我正在尝试通过使用 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())
将 CPant 作为我的数据发送回 _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
?
在此先感谢您的帮助!