如此同步线程有何问题?

hproof 2001-04-01 01:13:00
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;
}

当线程函数同时被执行于多个线程时,能保证它们的零界区吗?
...全文
42 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

15,467

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧