社区
进程/线程/DLL
帖子详情
多线程访问全局的结构体数组
xuebond
2010-01-08 04:36:43
请教各位一个问题,多线程访问同一个全局的结构体数组中的不同元素,会不会产生线程同步问题。
...全文
565
14
打赏
收藏
多线程访问全局的结构体数组
请教各位一个问题,多线程访问同一个全局的结构体数组中的不同元素,会不会产生线程同步问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zyq5945
2010-01-09
打赏
举报
回复
[Quote=引用 10 楼 xuebond 的回复:]
zyq5945,我的意思是:一个线程访问m_SensorInf[i].DealMode,
另一个线程访问m_SensorInf[i].GetMode
这样算是内存重叠吗?会不会发生访问冲突?请指教,谢谢
[/Quote]
内存不重叠,如LS所说,如果你的变量就赋值一次(以后不修改值),以后只是读取的话可以不用同步机制
但m_SensorInf[i].GetMode如果在这个线程中读取,在另外的线程中会被修改的话最好加同步机制
saintwang
2010-01-09
打赏
举报
回复
只有读操作,不会冲突的。
kone123
2010-01-09
打赏
举报
回复
不会的
sb3day
2010-01-08
打赏
举报
回复
[Quote=引用 10 楼 xuebond 的回复:]
zyq5945,我的意思是:一个线程访问m_SensorInf[i].DealMode,
另一个线程访问m_SensorInf[i].GetMode
这样算是内存重叠吗?会不会发生访问冲突?请指教,谢谢
[/Quote]只是访问,不会冲突,冲突就是一个线程删改了数据的时候,另一个线程访问数据造成错误
xuebond
2010-01-08
打赏
举报
回复
zyq5945,我的意思是:一个线程访问m_SensorInf[i].DealMode,
另一个线程访问m_SensorInf[i].GetMode
这样算是内存重叠吗?会不会发生访问冲突?请指教,谢谢
zyq5945
2010-01-08
打赏
举报
回复
多个线程可能会同时访问同一个结构体,但是绝对不会访问同一个的结构体里的相同的变量
不知道你是怎么保证不会访问同一个的结构体里的相同的变量.如果真能保证可以不加同步机制.
同一个内存地址:一个变量,它的引用和它的指针都会指向同一个内存地址.
内存地址不重叠:比如一个你这一次要访问4个字节,下一次访问的是这4个字节的后3个字节就是内存重叠.
xuebond
2010-01-08
打赏
举报
回复
nintendo_dskay,“同一段内存”如何理解?一个字节?,谢谢
zyq5945,我这里一个线程里要访问同一个结构体数组的很多元素,而且毫无疑问其它的线程也要访问这些元素,但是重要的是:虽然多个线程可能会同时访问同一个结构体,但是绝对不会访问同一个的结构体里的相同的变量。
如:
m_SensorInf[i].DealMode 这里m_SensorInf[i]是结构体数组的一个元素,DealMode是结构体里的一个变量。
nintendo_dskay
2010-01-08
打赏
举报
回复
对同一段内存进行多线程读写操作才需要同步
lllyyy2403
2010-01-08
打赏
举报
回复
[Quote=引用 4 楼 zyq5945 的回复:]
一个线程只对应访问一个结构体数组元素就不用考虑同步问题.
[/Quote]
---是的。
JonathanS666
2010-01-08
打赏
举报
回复
看看有没有写操作
zyq5945
2010-01-08
打赏
举报
回复
一个线程只对应访问一个结构体数组元素就不用考虑同步问题.
sandyandy
2010-01-08
打赏
举报
回复
[Quote=引用 1 楼 zyq5945 的回复:]
只要不是访问同一个内存地址,或者访问的内存地址不重叠就不会.
[/Quote]
很正确, 或者不同读写同一个地址
尘雨
2010-01-08
打赏
举报
回复
只是读取,不会产生线程同步问题
zyq5945
2010-01-08
打赏
举报
回复
只要不是访问同一个内存地址,或者访问的内存地址不重叠就不会.
c语言中 定义结构体变量初始化,c++中的结构体:声明 定义 初始化
本文介绍了C语言中结构体的概念和用途,详细阐述了结构体的定义、声明和初始化方法,包括先声明后定义、声明与定义结合以及结构体成员为其他结构体的情况。同时,讨论了C语言中处理结构体的内存分配和寻址原理,并通过实例展示了结构体的初始化过程。
JNI/NDK入门指南之正确姿势了解,使用,管理,缓存JNI引用
本文深入解析JNI中局部引用、
全局
引用和弱
全局
引用的概念、使用场景及管理技巧,通过实例展示引用缓存的正确姿势,助你规避内存泄漏风险。
语法使用优化(c++)
本文分享了C++编程中的一些优化技巧,包括循环优化、字符串与字符数组使用、容器选择、位操作、原子操作等,旨在提高程序性能与效率。重点介绍了如何在循环中使用减法替代加法、优化字符串连接、使用vector和list的策略、容器遍历与内存管理、以及在
多线程
环境下提高性能的方法。
易语言
多线程
传参:3种内存指针封装方案对比与性能实测
本文针对易语言
多线程
仅支持单整数参数的限制,系统对比指针数组、
全局
变量+索引、自定义结构体三种内存指针封装方案。通过1000线程实测(3文本+2整数参数),分析各方案在性能、线程安全、内存管理及类型安全性方面的表现,并给出适用场景建议与线程安全防护、内存泄漏规避等实战优化策略。
第39节:CUDA Memory Coalescing(合并
访问
)
本文围绕 CUDA Memory Coalescing(合并
访问
)展开,介绍其概念,即 GPU
多线程
访问
全局
内存地址连续时可合并为一次事务以提升性能。阐述了合并
访问
的必要性,讲解不同架构的合并规则,通过实例和典型案例分析合并与非合并
访问
情况,还给出性能调优建议、检测工具及小练习。
进程/线程/DLL
15,465
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章