我必须将来自两个数据通道的一些数据吃到两个队列中。从每个特定通道获取的数据必须写入其各自的队列。

因此,我有一个功能:

void eatData(channel c, channel id)
{
   while (true)
   {
      if (channelid == 1)
      {
         write to queue 1;
      }
      else
      {
         write to queue 2;
      }
   }
}


注意while循环
我正在轮询数据,该应用程序对时间非常敏感。
有没有一种方法可以消除那些if条件,而无需编写两个不同的函数,如下所示:

void eatDataFromChannelOneAndWriteToQueueOne()
void eatDataFromChannelTwoAndWriteToQueueTwo()


可以使用模板来解决此问题吗?

最佳答案

我想模板会为您提供帮助,例如:

template<int>
struct QueueSelector
{
    static YourQueue& Queue;
};

template<int CH>
YourQueue& QueueSelector<CH>::Queue = queue2;

template<>
YourQueue& QueueSelector<1>::Queue = queue1;

template<int CH>
void eatData()
{
    processing with QueueSelector<CH>::Queue
}

关于c++ - 编译时参数处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24841327/

10-15 17:45