0
我在我的业余爱好项目工作共享的数据量较大,在线跳棋板游戏,基于IOCP multithredaed服务器上。EnterCriticalSection的和多线程服务器
下面是主板和观众的结构:
typedef struct _board {
....
PPER_viewer Viewerlist;
...
} board, *PPER_board;
typedef struct _viewer {
SOCKET sc;
struct _viewer *pCtxtBack;
struct _viewer *pCtxtForward;
} viewer, *PPER_viewer;
Viewerlist在董事会结构是观众的双向链表的开始。当玩家坐下/到达特定的棋盘时,该列表会更新为查看器结构。我还使用查看器列表将片段移动发送给桌面上的所有查看者。由于多线程,我在查看器列表上使用EnterCriticalSection。
我的困惑:如何应对情况,当时有10打开我的服务器主板?对所有打开的电路板使用相同的临界区似乎是不合适的?例如,在30个开放板的情况下我应该为每个板子制作30个分开的Entercriticalsection?
在此先感谢您的帮助。
是初始化临界区的大量与InitializeCriticalSection当服务器启动,做出某种池或它们的阵列,并且,neccesary时采取的关键部分从池好主意吗? – maciekm
否。创建共享数据时初始化它们。当共享数据死亡时完成它们。 –