当有很多模块对一个缓冲区进行读写时,结构应该怎么设计

当有很多模块对一个缓冲区进行读写时,结构应该如何设计
如题
但是这些读写过程是按照一定的顺序关系进行而不是同时进行的,就怕当一个过程没有完成时另一模块又开始读写和计算

这个结构该如何设计呢

------解决方案--------------------
如果你的“模块”不是多线程,不用考虑这个问题;如果是多线程,用互斥量来控制。
------解决方案--------------------
对缓冲区的操作进行锁定,对读写都要锁定。

CBuff
{
XXX IN()
{
//锁定
IN 操作
//解锁
};

xxx Out()
{
//锁定
out操作
//解锁
}
};
------解决方案--------------------
但是这些读写过程是按照一定的顺序关系进行而不是同时进行的
=========
既然这样就不用考虑其它的了
------解决方案--------------------
最简单的同步
定义:
CRITICAL_SECTION cs;

使用前:
InitializeCriticalSection(&cs) ;

程序退出时:
DeleteCriticalSection (&cs) ;

使用:
void myFunc(){
EnterCriticalSection (&cs) ;
//do your job
LeaveCriticalSection (&cs) ;
}

void myFunc222(){
EnterCriticalSection (&cs) ;
//do your job
LeaveCriticalSection (&cs) ;
}