我正在做一些 c++ 工作,设计一个在测试框架中使用的模拟器。无论如何,被测系统正在公开我广泛使用的 RCF API。问题是我只被允许(模拟真实系统)每个连接有一个“RCF 客户端”。这意味着我将不得不使用客户端线程安全。
通常我会通过名称调用 RCF 方法:
client->methodA(param);
现在相反,我必须(我认为)将每个方法包装在一个包含互斥调用的方法中:
virtual class RCFClientWrapper
{
protected:
boost::mutex mtx;
public:
virtual RCFClientWrapper();
}
class FunctionAClient:RCFClientWrapper
{
private:
boost::shared_ptr<RcfClient<IRCFFunctionA_IDL> > client;
public:
/*....Stuff....*/
void methodA(param)
{
boost::lock_guard<boost::mutex> lock(mtx);
client->methodA(param);
}
}
首先有没有更好的方法来做到这一点?其次,有没有办法“自动”完成所有这些小方法?而不是必须为每个方法都这样做?似乎有很多不必要的复制/意大利面。