社区
进程/线程/DLL
帖子详情
对于两个线程同时访问(读、写)一个全局变量(数组),我不加互斥量可以不?会不会出错?
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
打赏
举报
回复
会
曹建峰-17年老猿
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混乱了
线程
同步与
互斥
【Linux】
本文介绍了同步与异步,
互斥
与并发,原子性操作,临界资源和临界区,
互斥
锁,可重入和
线程
安全,死锁,
线程
同步,条件变
量
......
15.
线程
同步的几种方法
线程
同步通常是出现在多
线程
环境下的问题,对于多个
线程
同时
访问
的共享内存中的变
量
,如果不进行保护,就
会
导致一些列数据
出错
问题。以下图为例: 假设
线程
A在第一次
读
取变
量
的值为10,每次
写
周期
会
将变
量
A加5,理论上当
线程
A完成其任务的时候,变
量
的值变为20,但是由于
线程
B是在
两个
写
周期间
读
取的变
量
,结果为15,因此
会
导致数据
出错
。
互斥
锁,是进行
线程
同步的一种方式。顾名思义,当
线程
A对共享内存进行
访问
的时候,对其进行上锁,在
访问
结束后解锁。在加锁期间,如果
线程
B想要申请
访问
共享内存资源
Linux — 多
线程
的
互斥
与同步,信号
量
条件变
量
是pthread库提供的
一个
数据类型,每当有
线程
访问
临界资源时,申请
互斥
锁不成功,如果没有条件变
量
就
会
被阻塞挂起,有条件变
量
的话,就
会
通过
一个
接口将
线程
的PCB链接到条件变
量
里的队列中进行等待,上
一个
线程
访问
完临界资源后,它再想继续
访问
临界资源,对不起,要去条件队列里等待,此时
会
调用接口唤醒条件队列中的第
一个
线程
,让他进行
访问
。可是呢,我们无法在加锁之前就得知此次
访问
是否满足条件,这样的话就
会
造成不管满不满足条件,都要先加锁,然后检测,满足就挂起,这样
线程
啥也没干,转了一圈,还浪费时间。
linux下的多
线程
编程
1 引言
线程
(thread)技术早在60年代就被提出,但真正应用多
线程
到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持
线程
的概念,但是在
一个
进程(process)中只允许有
一个
线程
,这样多
线程
就意味着多进程。现在,多
线程
技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入
线程
呢?使用
Android中的
线程
(二)
线程
安全 &
线程
同步
文章目录
线程
安全synchronizedReentrantLockvolatile
线程
安全
线程
安全又叫
线程
同步,在Java中多个
线程
同时
访问
一个
可共享的资源变
量
时,有可能
会
导致数据不准确,导致使用该变
量
的逻辑出现问题,因此使用同步锁来保证
一个
线程
对该资源的操作完成之前,其他
线程
不
会
对其进行操作,即保证
线程
同步安全。 因此
线程
同步的本质就是
线程
排队,这可能跟它的字面意思相反,它的目的就是保证
线程
按照先后顺序
一个
一个
的
访问
共享资源,为了避免同时操作同
一个
共享资源。 在Java中实现
线程
安全的主要手段有:
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章