想到一个奇怪的问题:
象下面这个代码段:
UINT WriteThread(LPVOID param)
{Section.Lock();
for(int x=0;x<10;x++)
array[x]=x;
Section.Unlock();
}
UINT ReadThread(LPVOID param)
{
Section.Lock();
For(int x=0;x<10;x++)
Destarray[x]=array[x];
Section.Unlock();
}
使用CCriticalSection 对象对共享数据互斥访问 我的问题是如果WriteThread执行到Section.Lock() 同时ReadThread也执行到Section.Lock() 着不是就同时都要访问Section对象吗? 那如何保证对Section对象的互斥访问?
第二个问题: 我自己写了一个类 类对象作为全局变量 类中有5个方法 现在想实现对类对象中数据的互斥访问 用那种互斥方法比较好 我觉得用CCriticalSection 哪位给点建议! 高分给 谢谢!
象下面这个代码段:
UINT WriteThread(LPVOID param)
{Section.Lock();
for(int x=0;x<10;x++)
array[x]=x;
Section.Unlock();
}
UINT ReadThread(LPVOID param)
{
Section.Lock();
For(int x=0;x<10;x++)
Destarray[x]=array[x];
Section.Unlock();
}
使用CCriticalSection 对象对共享数据互斥访问 我的问题是如果WriteThread执行到Section.Lock() 同时ReadThread也执行到Section.Lock() 着不是就同时都要访问Section对象吗? 那如何保证对Section对象的互斥访问?
第二个问题: 我自己写了一个类 类对象作为全局变量 类中有5个方法 现在想实现对类对象中数据的互斥访问 用那种互斥方法比较好 我觉得用CCriticalSection 哪位给点建议! 高分给 谢谢!
解决方案 »
- 【MFC】在DoModal()出一个对话框中(主窗口未退出,被DoModal出的对话框遮住)绘图,除图形外,还有动态创建的控件。这时点开浏览器,再回到程序,无法
- VC怎么获取Excel表结构下子表的数目和名称
- LPITEMIDLIST 和 ITEMIDLIST 有联系吗?
- 【散分 1】申请大斑竹成功!
- VC中怎样实现类似其他语言yield(),实现在循环内响应其他用户事件而退出循环的函数
- 求助谢安王导,解决问题立刻给分
- MSDN中SFL文件夹下的.sfl文件怎么打开啊?
- 定制"浏览文件夹"对话框?
- 求教无法定位程序输入点于动态链接库问题
- 一个很棘手的关于snmp结合VC编程的问题(MSDN library里面的snmp的例子)
- FormView中的绘图问题
- 為什麼類的公共變量不能寫值呢???Unhandle exception in pase.exe:0xC0000005:Access violation
{
LARGE_INTEGER *pTime;
LPSYSTEMTIME lpst;
LPFILETIME lpftLocal,lpfutc;
HANDLE hTimer=CreateWaitableTimer(NULL,false,NULL);
GetSystemTime(lpst);
SystemTimeToFileTime(lpst,lpftLocal);
LocalFileTimeToFileTime(lpftLocal,lpfutc);
pTime=(LARGE_INTEGER*)lpfutc;
SetWaitableTimer(hTimer,pTime,lPeriod,NULL,NULL,false);
}void TimeOut( )
{
WaitForSingleObject(hTimer,INFINITE)
if(NatTable.bflag==true)
{
pNatItem ptr=NatTable.m_pHead ;
NatTable.bflag =false;
NatTable.Fresh (ptr,ptr->pLitem );
NatTable.bflag =true;
return;
}
}
以上是我写的对一个字定义的对NatTable定时刷新的两个函数 请帮我看看逻辑上有没有什么问题 因为代码还有很多 没发一起调试现在. 谢谢 分可以加!