多线程共享很多变量的同步问题 - C++ Builder / Windows SDK/API
我的程序是服务器程序,有5个线程,可能会有几百个连接,每个连接对就一块数据缓冲区,防止连接相互干扰,多个线程都可能访问任何一个数据缓冲区,如果采用一般的同步方法,需要每块数据缓冲区建立一个临界区或互斥体等,我担心占用系统资源太多。因此采用了另一个办法,代码如下:
void __fastcall ServerOverPort::SetSockBusy(PER_IO_DATA *PerIo,int Flags) //设置发送为繁忙{if(PerIo)//PerIo内包含了数据缓冲区,连接sock等信息ReSend: {EnterCriticalSection(Lock);//Lock是指向临界区的指针 if(PerIo->SendOrRecv ==0) {PerIo->SendOrRecv=Flags; } else {LeaveCriticalSection(Lock); Sleep(10); goto ReSend; } LeaveCriticalSection(Lock); }};