我有一个从消息队列中读取的类。现在这个类里面也有一个线程。根据 msg q 中 msg 的类型,它需要在该线程内执行不同的函数,因为类中的主线程始终等待 msg q。一旦从队列中读取消息,它就会检查其类型并调用适当的方法在线程中执行,然后再次返回读取(在 while 循环中读取)。
我正在使用 boost message q 和 boost threads 我该怎么做。它是这样的:
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方法并且主线程得到查询消息并想要调用它时会发生什么。提前致谢。