第12章 スレッドおよびスケジューリング

AMQ C++ は、C++11 以降における完全なマルチスレッドをサポートします。古いバージョンの C++ では、限定されたマルチスレッドが可能です。「古いバージョンの C++ の使用」 を参照してください。

12.1. スレッドモデル

container オブジェクトは複数の接続を同時に処理できます。AMQP イベントが接続で発生するとき、コンテナーは messaging_handler コールバック関数を呼び出します。1 つの接続のコールバックはシリアライズされます (同時に呼び出されません)。ただし、異なる接続のコールバックは並行して安全に実行できます。

handler 接続オプションを使用して、container::connect() または listen_handler::on_accept() の接続にハンドラーを割り当てることができます。ライブラリースレッドによる同時使用から保護するために、ハンドラーによるロックやその他の同期を必要としないように、各接続に個別のハンドラーを作成することが推奨されます。非ライブラリースレッドがハンドラーを同時に使用する場合は、同期が必要です。