我必须将来自两个数据通道的一些数据吃到两个队列中。从每个特定通道获取的数据必须写入其各自的队列。
因此,我有一个功能:
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/