メッセージキューから読み取るクラスがあります。現在、このクラスにはスレッドも含まれています。クラスのメイン スレッドは常に msg q を待機し続けるため、msg q 内の msg のタイプに応じて、そのスレッド内でさまざまな関数を実行する必要があります。キューからメッセージを読み取るとすぐに、そのタイプをチェックし、スレッドで実行される適切なメソッドを呼び出してから、再度読み取りに戻ります (while ループでの読み取り)。
ブースト メッセージ q とブースト スレッドを使用しています。そのようなもの:
while(!quit) {
try
{
ptime now(boost::posix_time::microsec_clock::universal_time());
ptime timeout = now + milliseconds(100);
if (mq.timed_receive(&msg, sizeof(msg), recvd_size, priority, timeout))
{
switch(msg.type)
{
case collect:
{
// need to call collect method in thread
}
break;
case query:
{
// need to call query method in thread
}
break;
等々。それはできますか?
それができれば、スレッドがcollectメソッドを実行していて、メインスレッドがクエリメッセージを取得してそれを呼び出したい場合はどうなりますか。前もって感謝します。