vb.net 多线程 同时访问同一个数组的问题

ttsffgg 2013-12-26 10:42:30
vb.net 2012
窗体和BackgroundWorker 共两个线程

两个线程同时访问位于窗体代码中定义的一个数组,涉及到的操作为赋值,redim等

这种做法可行吗?

我这样做的时候发现经常会出现读取错位,比如BackgroundWorker正在对数组进程操作时,窗体进程读取数组(0)的值时,实际得到的却是数组(1)的值


那么以下哪种说法正确?
1 不应该两个进程同时操作同一个数组,这种做法肯定是错的.

2 可以两个进程同时操作同一个数组,是我技术好导致错误.(如果是这样,能否大概指个方向)


谢谢了
...全文
589 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ttsffgg 2013-12-29
  • 打赏
  • 举报
回复
引用 4 楼 devmiao 的回复:
http://msdn.microsoft.com/zh-cn/library/dd997305(v=vs.110).aspx
谢谢提点:)
ttsffgg 2013-12-29
  • 打赏
  • 举报
回复
引用 1 楼 sp1234 的回复:
操作同一个数组的业务逻辑是什么? 设计业务逻辑时,要考虑到数组会被重定义大小的问题。在特定的代码中要“管理线程”并发,也就是要lock。
实际情况是一个二维数组中的数据需要经过两个步骤的处理,得到最后需要的结果 所以我的想法是,在后台弄一个线程出来进行第一个步骤的处理,每处理一些就通知一下窗体线程有一部分处理好了,然后窗体线程就去对这部分数据进行第二步骤的操作
  • 打赏
  • 举报
回复
嗯,我说的不是现学现卖的什么操作系统“使用说明”一类的书。这方面的教科书,至少有一、两个月的教学时间,都在讲“进程、线程、管程、管道、同步、信号量”等等概念,这就好象是厨师要先学认识厨具一样。
  • 打赏
  • 举报
回复
看你的描述,可能你需要找本操作系统的教材看看。
  • 打赏
  • 举报
回复
操作同一个数组的业务逻辑是什么? 设计业务逻辑时,要考虑到数组会被重定义大小的问题。在特定的代码中要“管理线程”并发,也就是要lock。
ufoamani 2013-12-27
  • 打赏
  • 举报
回复
学习下多线程
devmiao 2013-12-27
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/dd997305(v=vs.110).aspx

16,722

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧