不要只做技术:你自己测试一下同步吗?
我测试了一下,结论:不同步
测试环境:
Windows XP SP2
内存:256M
CPU:2.4G
(发表于2005-3-9 13:47:00)
greenjava:我真不明白.它的4篇文章至少有2,3篇都有错误,代码根本无法实现同步.竟然还能被选中进入知识库?
(发表于2005-7-11 13:04:00)
hexiyajin:绝对同步,你们怎么测的,虽然我不是lz,但是用眼睛看这么简单的代码也是同步的啊。
(发表于2006-5-8 12:05:00)
hexiyajin:1楼那个更逗,怎么不把机箱型号也写出来
(发表于2006-5-8 12:06:00)
fosky:绝对同步,下面是我自己添加测试的代码
UINT Thread_ReadProc(LPVOID param)
{
int aArray[10];
for (int i=0;i<20;i++)
{
DataArray.GetDataArray(aArray);
char str[255];
str[0]=0;
for (int j=0;j<10;j++)
{
int len=strlen(str);
wsprintf(&str[len],"%d",aArray[j]);
}
TRACE1("%s\n",str);
}
return 0;
}
void CDataArray::SetData(int iValue)
{
CSingleLock SingleLock(&Mutex);
SingleLock.Lock();
for (int i=0;i<10;i++)
{
iArray[i]=iValue;
TRACE1("set i = %d\n", iValue );
::Sleep(2000);
}
}
这两个函数经过修改了,延时加长,就可以清楚的看到结果
(发表于2006-6-23 16:45:00)
fosky:绝对同步,下面是我自己添加测试的代码
UINT Thread_ReadProc(LPVOID param)
{
int aArray[10];
for (int i=0;i<20;i++)
{
DataArray.GetDataArray(aArray);
char str[255];
str[0]=0;
for (int j=0;j<10;j++)
{
int len=strlen(str);
wsprintf(&str[len],"%d",aArray[j]);
}
TRACE1("%s\n",str);
}
return 0;
}
void CDataArray::SetData(int iValue)
{
CSingleLock SingleLock(&Mutex);
SingleLock.Lock();
for (int i=0;i<10;i++)
{
iArray[i]=iValue;
TRACE1("set i = %d\n", iValue );
::Sleep(2000);
}
}
这两个函数经过修改了,延时加长,就可以清楚的看到结果
(发表于2006-6-23 16:46:00)
..........................................................................
--------------------next---------------------