2012-11-28 37 views
0

我有一个是在听者中类中实现为char commBuffer [BUFFER_SIZE]如何在C++中处理通信缓冲区?

什么是创建由所有类所共享的通信缓冲器的最佳方式,而不是每一个类具有这样的结构,通通信缓冲器它只是一个指向缓冲区的指针?

+0

对于每个听众*不*有*自己的读取缓冲器有*非常*很好的理由吗?显而易见的答案(同步问题不能承受,这是**重要的**)..做'静态'类成员对你来说意味着什么。 – WhozCraig

+0

原因是空间......每个屏幕都继承了列表器,并且每个屏幕创建了30K的缓冲区空间 – Astronaut

+0

我可以使用大量的这些“屏幕”对象吗? – WhozCraig

回答

0

最简单方式是声明commBuffer[BUFFER_SIZE];全局。我不太确定best的方式。但如果您的案例中的best意味着easiest我会坚持全球宣言。如果你真的想保持纯粹的面向对象的话,把char commBuffer[BUFFER_SIZE]放到一个Singleton类中,然后读/写数据。

0

就像这样,如果它是线程使用互斥量来控制访问。

class Listener { 
    static char commBuffer[BUFFER_SIZE]; 
    static boost::mutex mutex; 
};