我有一个从消息队列读取的类。现在这个班里面还有一个线程。根据msg q中msg的类型,它需要在该线程内执行不同的函数,因为类中的主线程始终持续等待msg q。只要它从队列中读取消息,就会检查其类型并调用在线程中执行的适当方法,然后再次返回读取(在while循环中读取)。调用C++中的线程方法
我正在使用助推消息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方法并且主线程获取查询消息并且想要调用它时会发生什么情况。 在此先感谢。
问题? msg.type在消息中,并且正在接通它。当一些线程接近它时,新的消息只会排队等待处理。我不明白,超时的东西 - 大概你有一些必须执行的东西,如果没有消息收到100毫秒? –