对于两个线程同时访问(读、写)一个全局变量(数组),我不加互斥量可以不?会不会出错?

cetcscada 2003-12-31 11:29:26
谢谢
...全文
305 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mymmsc 2004-03-24
  • 打赏
  • 举报
回复
必须要加,否则操作没有原子性。
freeinsky 2004-03-24
  • 打赏
  • 举报
回复
加吧,兄弟,不然你会看到神奇的东西的
ymbymb 2004-03-23
  • 打赏
  • 举报
回复
肯定要加,不然不稳定
ahao 2004-03-23
  • 打赏
  • 举报
回复
废话,不加你试试
shaker 2004-03-22
  • 打赏
  • 举报
回复
错不错完全是随机的~不过错的机会比较大~

加了互斥,一般就不会出错了~
导工 2004-03-22
  • 打赏
  • 举报
回复
单CPU很难说,多CPU肯定会。
vcforever 2004-03-22
  • 打赏
  • 举报
回复
在多个线程同时访问共享资源的时候最好是加上!
不然会有不可预料的后果出现!
lovemaggic 2004-03-22
  • 打赏
  • 举报
回复
必须要加的,参看候捷翻译的<<Win32多线程设计>>。
nalo 2004-03-22
  • 打赏
  • 举报
回复
还是加上的好
shenyc 2004-01-08
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
有时会出错

如A[10000]为int数组;R,W为读写进程
W::Run()
{
for(int i;i<10000i;i++)
{
A[i]=0;
}

for(int i;i<10000i;i++)
{
A[i]=i;
}
}
R::Run()
{
int B[10000],C[10000];
for(int i;i<10000i;i++)
{
B[i]=A[i];
}
for(int i;i<10000i;i++)
{
C[i]=A[i];
}
}
由于两个线程交替执行,你在B,C两个数组中将看到0和i混乱了

15,471

社区成员

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

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