C ++に含まれている非同期エージェントライブラリ(AAL)を使用して2つの独立したスレッドを呼び出そうとしています(AALの説明についてはこちらも参照してくださいhttp://msdn.microsoft.com/en-us/library/dd492627.aspx)。エージェントライブラリは、制御フローではなくデータフローに基づく非同期通信モデルを介して分離されたコンポーネントを接続できるようにすることで、共有状態の代替手段を提供します。データフローとは、必要なすべてのデータが利用可能になったときに計算が行われるプログラミングモデルを指します。制御フローとは、計算が所定の順序で行われるプログラミングモデルを指します。
1つのエージェントからの任意のデータを待ちたくないので、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())
_source-Messageの送信元のエージェントに返送されるデータとしてCPlantを使用します。Agent1は、単純なブール値の「true」およびAgent2(上記のコードを含む)応答をCPlantクラスで送信します。これは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
?
よろしくお願いします!