社区
进程/线程/DLL
帖子详情
多线程访问全局的结构体数组
xuebond
2010-01-08 04:36:43
请教各位一个问题,多线程访问同一个全局的结构体数组中的不同元素,会不会产生线程同步问题。
...全文
523
14
打赏
收藏
多线程访问全局的结构体数组
请教各位一个问题,多线程访问同一个全局的结构体数组中的不同元素,会不会产生线程同步问题。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
只要不是访问同一个内存地址,或者访问的内存地址不重叠就不会.
MyDemo-qt-singleton.7z
然而,需要注意的是,静态变量在
多线程
环境下可能存在竞态条件,因此需要正确同步
访问
。 3. 结构体指针new生成:当需要动态分配结构体时,可以使用new运算符。这将为结构体分配堆内存,可以避免栈溢出问题。但是,...
2020-2021第二学期《GPU程序设计》期末考试1
它们在内存
访问
上有所不同:
结构体数组
中的结构体会连续存储,而数组结构体则会按数组的每个元素分别存储,这影响了内存
访问
的效率和对齐要求。 六、同步及其实现方法 在CUDA编程中,同步是保证线程间正确通信的...
C和指针答案
-
结构体数组
与结构体指针:如何使用指针
访问
结构体数组
。 - 结构体指针作为函数参数:如何通过函数传递结构体指针。 - 结构体与链表:使用结构体和指针构建链表。 ### 十三、高级指针主题 第十三章“Advanced ...
让线程的参数是文本型 例子分享-易语言
这种方法简单直观,但需确保线程
访问
全局
变量时的同步,避免数据竞争。 2. **结构体**:创建一个包含文本字段的结构体,将结构体作为线程参数传递。线程内部通过解构体获取文本。这种方法可以传递多个参数,但需要...
C面试题库二宣贯.pdf
可重入函数不会因为被中断而丢失数据,它们要么使用局部变量,要么在
访问
全局
数据时进行保护。不可重入函数可能在
多线程
环境中引起数据错误,因为它们可能修改静态数据或不保护
全局
资源。 6. **字符串比较**: ...
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章