社区
语言基础/算法/系统设计
帖子详情
多线程读写变量的问题
linsoo
2011-08-23 09:26:09
对于普通的变量integer类型和Cardinal这种,如果有两个线程,一个线程写,一个线程读,是否有可能造成异常? 是否需要互斥?
谢谢~
...全文
367
10
打赏
收藏
多线程读写变量的问题
对于普通的变量integer类型和Cardinal这种,如果有两个线程,一个线程写,一个线程读,是否有可能造成异常? 是否需要互斥? 谢谢~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
funxu
2011-08-24
打赏
举报
回复
InterlockedDecrement最快
临界区速度中
互斥最慢,因为它是跨进程的
haitao
2011-08-24
打赏
举报
回复
[Quote=引用 8 楼 linsoo 的回复:]
引用 6 楼 sz_haitao 的回复:
32位整数的读写,已经相当原子
但是理论上还是不能保证完全没问题(A线程写了一半就被B线程读走)
只是发生的概率估计会很低
最好还是加互斥之类的包含一下
如果只是读取的数据错误的话,关系不大,只要别造成整个线程挂掉就行的...
[/Quote]
卡死、挂掉,一般是加锁后的死锁才导致的
linsoo
2011-08-24
打赏
举报
回复
[Quote=引用 6 楼 sz_haitao 的回复:]
32位整数的读写,已经相当原子
但是理论上还是不能保证完全没问题(A线程写了一半就被B线程读走)
只是发生的概率估计会很低
最好还是加互斥之类的包含一下
[/Quote]
如果只是读取的数据错误的话,关系不大,只要别造成整个线程挂掉就行的...
浩南_哥
2011-08-24
打赏
举报
回复
[Quote=引用 5 楼 linsoo 的回复:]
我想知道的其实是,是否会造成这两个线程卡死或别的什么错误。
[/Quote]
是不是卡死,主要还是看你的这个变量的用途。一般就是读线程可能会读到脏数据。
haitao
2011-08-24
打赏
举报
回复
32位整数的读写,已经相当原子
但是理论上还是不能保证完全没问题(A线程写了一半就被B线程读走)
只是发生的概率估计会很低
最好还是加互斥之类的包含一下
linsoo
2011-08-24
打赏
举报
回复
我想知道的其实是,是否会造成这两个线程卡死或别的什么错误。
linsoo
2011-08-24
打赏
举报
回复
嗯,我这里是不需要关心读取的数据是否脏读,只要写进去的是1,2,3,别读出来是-1,-2,-3就可以...
这样也需要互斥吗?
rainychan2009
2011-08-23
打赏
举报
回复
请LZ参考 Delphi5开发人员指南 第13章关于多线程的。这一章全面介绍了线程、线程同步,另外有小例子,相信LZ在看书的过程中就能解决问题
bdmh
2011-08-23
打赏
举报
回复
会,或者用临界,或者用InterlockedDecrement系列函数,做原子方式的增加减少
浩南_哥
2011-08-23
打赏
举报
回复
添加临界区,如果不加限制肯定会造成读取的数据不争取。
实战并发编程 - 01
多线程
读写
同一共享
变量
的线程安全
问题
深入剖析
文章目录示例CPU的内存模型Java内存模型 示例 来看个需求: 统计服务器某个接口的访问次数 accessCount字段表示接口被访问的次数, 每次访问接口的时候就调用一次access()方法,访问次数+1,累积下来,就能统计出接口被访问的次数了。 接口很可能被多个线程同时访问,即access()方法被多个线程调用。那么
问题
来了:
多线程
调用access()方法时,接口访问次数统计的结果是否能保证准确呢? 显而易见:不能。 CPU的内存模型 接下来分析一下为什么上面统计的结果会有
问题
. 我们先来简单理
多线程
环境下对
变量
的
读写
操作的原子性
问题
(一道百度笔试题引发的思考)
最近天天专注于复习专业课知识,准备迎接十月份的校园招聘。在网上看了几套百度的笔试试题,其中有一道给我留下了深刻的印象。题目如下:以下
多线程
对int型
变量
x的操作,哪几个需要进行同步:( )A. x=y; B. x++; C. ++x; D. x=1;从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。01 x = y; 02 mov eax,dword ptr [y] 03 mov dword ptr [x],eax 04 05 x++; 06 mov eax,dword p
jmeter 获取唯一全局
变量
及
多线程
读写
的
问题
例如,使用View Results Tree监听器查看一个请求的响应数据,然后在另一个线程组中使用BeanShell Sampler或JSR223 Sampler来提取并使用这些数据。可以通过减少文件打开次数、使用内存中的数据结构来传递数据,或者将数据存储在数据库中,通过JDBC请求来读取,以减少文件I/O操作。: 如果你的唯一ID是从某个响应中提取的,你可以使用正则表达式提取器来提取这个ID,然后在BeanShell PostProcessor中使用。例如,使用更高效的数据结构来存储和检索数据。
多线程
环境下对
变量
的
读写
操作的原子性
问题
以下
多线程
对int型
变量
x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; C. ++x; D. x=1; 从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。 01 x = y; 02 mov eax,dword ptr [y] 03 mov dword ptr [x],eax 04 05
多线程
环境下对
变量
的
读写
操作的原子性
问题
【baidu】
以下
多线程
对int型
变量
x的操作,哪几个需要进行同步:( ) A. x=y; B. x++; C. ++x; D. x=1; 从表面看上去实在是看不出什么突破口,我们不妨将这些代码译成汇编语言再来分析。 01 x = y; 02 mov eax,dword ptr [y] 03 mov dword ptr [x],eax 04 05
语言基础/算法/系统设计
16,741
社区成员
33,233
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章