多个多线程访问全局变量去访问同一个类中的变量会产生冲突吗

后使用快捷导航没有帐号?
请教大家一个问题,多个线程访问同一个全局变量
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
请教大家一个问题,多个线程访问同一个全局变量,例如int A, 如果2个线程都有可能写这个变量A则需要加锁保护这个变量,但是如果一个线程可以读写A,而另外一个线程只是读取该变量A的值,请问大家不加锁是否可以?
来自EEWORLD合作群:arm linux fpga 嵌入0() 群主:wangkj
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
肯定需要加锁
但是可以加读写锁
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
如果第二个线程在第一个线程写之前读那么不就出错了
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
秋水-剑圣,你好,你说的出错是什么意思?是否可以这样理解: 例如当A=3时,如果第2个线程取读,在读取的过程中第1个线程要改变这个值例如改为4,则读取的就不对吗?是3还是4还是一个其它的值?我的程序如果读出的是3或者是4都认为是正确,但不能是一个错误的值,这样的情况可以不加锁吗?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
你如果这么要求的话我觉得是可以的,你不要求读取的是最新值,IC-书童怎么看呢?
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我不要求读取的是最新的值,应为我的程序是循环程序,这次读取的不是最新值,下次还可以读取到一个更新的值,但需要保证的是不得对取一个错误的数。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我认为可以
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
秋水-剑圣:
0041B53E&&mov& && &&&eax,dword ptr [g_nCount1 (458A20h)]
&&add& && &&&eax,1
&&mov& && &&&dword ptr [g_nCount1 (458A20h)],eax
它中间有个ADD EAX,1,,假设在这个地方线程A的时间片到咯,它保存它的线程上下文假设此时EAX的值是1)。它不会去执行
mov& && &&&dword ptr [g_nCount1 (458A20h)],eax
就并没有把累加的结果放到g_nCount1所在的内存中,然后线程B执行它的代码。B执行后g_nCount1的值变成2.然后又切换到A执行(A回复线程的上下文).这个时候A就去执行mov& && &&&dword ptr [g_nCount1 (458A20h)],eax
此时线程A就把线程B所累加的值覆盖咯。g_nCount1 又变成1咯啊。就这样反复造成的最后两个结果不一样的
但是,我认为读取的值还是正确的,只不读取的还是另外一个线程上一次的值。
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
你实际测过没有?结果如何?
多重启设备几次看看,我觉得理论上很简单,应该是可以的
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
我试试看看
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
在线时间0 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
不是太好试,只能从理论上分析。
在线时间19 小时
TA的帖子TA的资源
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
一粒金砂(初级), 积分 0, 距离下一级还需 5 积分
这种用法在采样与滤波计算中常用吧,一边采样,一边计算,可能会访问同一个数据。
Powered by
逛了这许久,何不进去瞧瞧?<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
UID7240278空间积分0 积分5817阅读权限70帖子精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
我觉得会的,应该要有互斥锁的,是不是呢?
请用你知道的去帮助别人,就像别人当初帮助你一样!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
UID空间积分0 积分11596阅读权限90帖子精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
大富大贵, 积分 11596, 距离下一级还需 8404 积分
帖子主题精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
认证徽章论坛徽章:194
写的数量小于PIPE_BUF是安全的
UID7240278空间积分0 积分5817阅读权限70帖子精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
写的数量小于PIPE_BUF是安全的
hellioncu 发表于
& &&&#define PIPE_BUF& && &&&4096& & /* # bytes in atomic write to a pipe */
找到了,兄台,能解释一下原因吗?
请用你知道的去帮助别人,就像别人当初帮助你一样!
UID空间积分0 积分11596阅读权限90帖子精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
大富大贵, 积分 11596, 距离下一级还需 8404 积分
帖子主题精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
认证徽章论坛徽章:194
#define PIPE_BUF& && &&&4096& & /* # bytes in atomic write to a pipe */
找到了,兄台,能 ...
rain_fish 发表于
& & 这个我没研究过内核,大概是本身实现有锁吧,超过这个值内部需要多次write了
UID7240278空间积分0 积分5817阅读权限70帖子精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
写的数量小于PIPE_BUF是安全的
hellioncu 发表于
& & 再请教一个,linux下管道的最大容量是多少?32K?还是可以修改?
请用你知道的去帮助别人,就像别人当初帮助你一样!
UID空间积分0 积分11596阅读权限90帖子精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
大富大贵, 积分 11596, 距离下一级还需 8404 积分
帖子主题精华可用积分11596 信誉积分4714 专家积分302 在线时间17003 小时注册时间最后登录
认证徽章论坛徽章:194
再请教一个,linux下管道的最大容量是多少?32K?还是可以修改?
rain_fish 发表于
& & 让你失望了,我不知道。
管道用得少,而且一般应用中容量具体多大没多少意义,所以我也不去关心
UID7240278空间积分0 积分5817阅读权限70帖子精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
让你失望了,我不知道。
管道用得少,而且一般应用中容量具体多大没多少意义,所以我也不去关心
hellioncu 发表于
& & 还是非常感谢!
请用你知道的去帮助别人,就像别人当初帮助你一样!
UID空间积分0 积分270阅读权限20帖子精华可用积分270 信誉积分362 专家积分0 在线时间337 小时注册时间最后登录
稍有积蓄, 积分 270, 距离下一级还需 230 积分
帖子主题精华可用积分270 信誉积分362 专家积分0 在线时间337 小时注册时间最后登录
论坛徽章:0
/* # bytes in atomic write to a pipe */
为什么说是原子的呢,若真是原子的那倒是不需要了
UID空间积分0 积分270阅读权限20帖子精华可用积分270 信誉积分362 专家积分0 在线时间337 小时注册时间最后登录
稍有积蓄, 积分 270, 距离下一级还需 230 积分
帖子主题精华可用积分270 信誉积分362 专家积分0 在线时间337 小时注册时间最后登录
论坛徽章:0
在网上搜了以下貌似是这样的
& & 当要写入的数据量不大于PIPE_BUF时,Linux将保证写入的原子性。如果此时管道空闲缓冲区不足以容纳要写入的字节数,则进入睡眠,直到当缓冲区中能够容纳要写入的字节数时,才开始进行一次性写操作。
  当要写入的数据量大于PIPE_BUF时,Linux将不再保证写入的原子性。FIFO缓冲区一有空闲区域,写进程就会试图向管道写入数据,写操作在写完所有请求写的数据后返回。
若是原子操作就不用加锁了把~~希望有用
UID7240278空间积分0 积分5817阅读权限70帖子精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
富足长乐, 积分 5817, 距离下一级还需 2183 积分
帖子主题精华可用积分5817 信誉积分260 专家积分35 在线时间1404 小时注册时间最后登录
论坛徽章:0
在网上搜了以下貌似是这样的
& & 当要写入的数据量不大于PIPE_BUF时,Linux将保证写入的原子性。如果此时 ...
SpringfieldKing 发表于
& & 谢谢这个兄台!
请用你知道的去帮助别人,就像别人当初帮助你一样!说好的多线程同时写入同一变量会崩溃呢,为什么没问题??大家进来看看...
[问题点数:20分,结帖人rocklee]
说好的多线程同时写入同一变量会崩溃呢,为什么没问题??大家进来看看...
[问题点数:20分,结帖人rocklee]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。查看: 830|回复: 2
在多线程中同时对一个变量进行修改,真的会出错么,我测试的是正常的
阅读权限70
在线时间 小时
签到天数:5 天结帖率: (98/124)
我测试的一个程序,5个线程同时对一个局部变量进行加法操作,事实上说明并没有出现问题然后我再用5个线程,同时取出这5个线程中a变量的内存地址,发现这5个a的地址都不一样
所以。。。好奇怪,他们都说线程中只能同时读不能同时写。。。惆怅中
源码在附件
14:36 上传
点击文件名下载附件
122.59 KB, 下载次数: 10
局部的没问题 你操作 全局的就会出事
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至
可获得加分喔。友情提醒:本版被采纳的主题可在
帖子申请荣誉值,获得 1点 荣誉值,荣誉值可兑换终身vip用户组哦。快捷通道: →
阅读权限70
在线时间 小时
结帖率: (4/6)
局部的没问题 你操作 全局的就会出事
热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!
阅读权限70
在线时间 小时
结帖率: (2/8)
操作全局变量&&同一个内存 你多个人一起写&&就会出事了
精易论坛 - 有你更精彩 /1
易语言自带组件无法满足开发需求?想让商业软件更专业更美观?SmartUI界面引擎作者将带领大家从零开始系统学习自绘,写自绘框架引擎,结合web来diy界面,快来围观~
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
揭阳精易科技有限公司申明:我公司所有的培训课程版权归精易所有,任何人以任何方式翻录、盗版、破解本站培训课程,我们必将通过法律途径解决!
公司简介:揭阳市揭东区精易科技有限公司致力于易语言教学培训/易语言学习交流社区的建设与软件开发,多年来为中小企业编写过许许多多各式软件,并把多年积累的开发经验逐步录制成视频课程供学员学习,让学员全面系统化学习易语言编程,少走弯路,减少对相关技术的研究与摸索时间,从而加快了学习进度!
Powered by

我要回帖

更多关于 多线程访问静态变量 的文章

 

随机推荐