如此同步线程有何问题?
1,我怀疑同步对象占太系统资源;
2,这里是特殊例子,某次漏执行一次无妨;
同步类:
class X
{
char m_bBusy;
public:
inline bool Lock();
inline void UnLock();
X();
};
bool X::Lock()
{
if(m_bBusy==0)
{
m_bBusy++;
if(m_bBusy==1)
return TRUE;
m_bBusy--;
}
return FALSE;
}
void X::UnLock()
{
m_bBusy=0;
}
X::X():m_bBusy(0)
{
;
}
//全局变量
X g_X[100];
//线程原形
DWORD WINAPI ThreadProc(LPARAM lParam)
{
DWORD dwResult=0;
int i;
for(i=0;i<100;i++)
{
if(g_X[i].Lock()) //锁定失败者漏执行一次
{
//....
g_X[i].UnLock();
}
}
return dwResult;
}
当线程函数同时被执行于多个线程时,能保证它们的零界区吗?