社区
进程/线程/DLL
帖子详情
难道线程无法访问全局变量吗?大家线程之间的共享数据都怎么解决?
BlueanGel
2005-03-30 08:51:00
CArray<STRU, STRU&> arryGlobalStruct;
上面是我定义的全局变量,类型是数组,可是线程中只要对数组进行 Add 或者 SetAt 操作
整个程度都会挂掉, GetAt 就没问题
这种情况该怎么处理?
大家线程之间的共享数据都怎么解决?
...全文
312
15
打赏
收藏
难道线程无法访问全局变量吗?大家线程之间的共享数据都怎么解决?
CArray arryGlobalStruct; 上面是我定义的全局变量,类型是数组,可是线程中只要对数组进行 Add 或者 SetAt 操作 整个程度都会挂掉, GetAt 就没问题 这种情况该怎么处理? 大家线程之间的共享数据都怎么解决?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Mr_Ldh
2005-03-31
打赏
举报
回复
是不是连接时用的运行库不对?
clovefjp
2005-03-31
打赏
举报
回复
用消息或者事件来同步控制吧。
晨星
2005-03-31
打赏
举报
回复
唉,up。
俺就用critical section访问过全局的CList,好像没什么问题嘛。
BlueanGel
2005-03-31
打赏
举报
回复
up
oyljerry
2005-03-31
打赏
举报
回复
可能这个自定义的STRU的数据访问有问题
sjcode
2005-03-31
打赏
举报
回复
写一个类,把它做为成员数据,手动实现一下它的互斥。
再把它设为全局变量或指针。
每到一处,extennd它就是了。
gnixemos
2005-03-31
打赏
举报
回复
选择多线程库
BlueanGel
2005-03-30
打赏
举报
回复
还是不行... 错误都是 Runtime error, 具体没说
主线程和一个副线程都没问题,可再开副线程就有问题了
CArray 还不能用 volatile... 55555
头疼了
晨星
2005-03-30
打赏
举报
回复
要不读和写一起锁,读的时候不许写,写的时候也不许读。
晨星
2005-03-30
打赏
举报
回复
调试一下,什么错误?
先开一个线程,看看错误会不会发生?
BlueanGel
2005-03-30
打赏
举报
回复
用了临界对象锁定,还是会提示错误...
有没有好点的折中办法?
头疼死了
BlueanGel
2005-03-30
打赏
举报
回复
csGlobalArray.Lock();
arryGlobalStruct.SetAt(iIndex, StructElement);
csGlobalArray.Unlock();
奇怪,为什么我还是会提示错误?
晨星
2005-03-30
打赏
举报
回复
别忘了:
include <afxmt.h>
晨星
2005-03-30
打赏
举报
回复
CArray<STRU, STRU&> arryGlobalStruct;
CCriticalSection csGlobalArray;
然后在每一个线程需要修改的时候这样:
cs.Lock();
arryGlobalStruat.SetAt(....);
cs.Unlock();
晨星
2005-03-30
打赏
举报
回复
你应该互斥访问,当一个在更改的时候,另一个就不要更改。
线程
的
共享
本文详细介绍了Java并发编程中关于同步、内存可见性和
线程
安全的重要概念。同步机制用于防止多个
线程
同时访问
共享
数据
,而内存可见性则确保
线程
修改的对象状态对其他
线程
可见。Java中,volatile、synchronized、final和锁都能保证可见性。
线程
封闭是一种避免
线程
安全问题的技术,通过限制对象在单
线程
内使用。此外,不可变对象由于其状态不可变,天然具备
线程
安全性。正确发布对象是多
线程
共享
的关键,不正确的发布可能导致对象状态不一致。文章还讨论了安全发布对象的几种模式,并介绍了
线程
安全的
共享
策略,如
线程
封闭、只读
共享
、
线程
安全
共享
和保护对象。
【Linux操作系统】
线程
的基本知识和创建--循环创建多个子
线程
本文介绍了
线程
的概念、作用,三级映射的实现,以及创建
线程
的方法(包括pthread_self和pthread_create),讨论了
线程
间的
共享
与非
共享
问题,以及通过示例展示了如何创建和管理多个子
线程
,特别关注了
全局变量
的
共享
策略。
C语言主
线程
与分支
线程
之间
的变量
数据
传递
文章详细探讨了在C语言中,主
线程
与分支
线程
如何访问和
共享
数据
。
全局变量
可被两者同时访问,而局部变量则不能。通过void*arg参数,可以实现在创建
线程
时传递
数据
,使得分支
线程
能访问主
线程
的局部变量,或者主
线程
通过接收分支
线程
传递的指针访问其局部变量。
在多
线程
情况下 局部变量与
全局变量
哪个比较安全呢
本文深入探讨了局部变量与
全局变量
在多
线程
环境中的区别及其潜在风险,强调了同步机制在避免
数据
冲突的重要性。通过实例解释了
全局变量
在不同
线程
间的
共享
访问可能引发的问题,并提出了使用同步方法或同步代码块来确保
线程
安全的
解决
方案。
Java 多
线程
可
共享
的资源?
文章讲述了在单进程多
线程
中,
线程
如何
共享
内存、文件描述符、代码和
数据
,以及如何通过同步机制管理这些资源以保证
数据
一致性。同时强调了
线程
本地存储、调用栈和CPU寄存器的
线程
隔离性是并发编程的重要概念。
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章