多线程的加锁问题

jdhsd 2006-03-08 10:18:30
我做了一个多线程程序,出现的问题是在对一个变量的操作时候出现了问题
具体是这样的
比如我有一个变量
线程1执行的时候为a
线程2执行的时候为b

当线程1的先开始运行,在线程1没有结束时候启动线程2,此时变量的值就变为b了
我想实现的是在线程1运行期间始终为a,线程2运行期间始终为b,
通过什么方式可以实现啊?
谢谢

...全文
141 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdhsd 2006-03-08
  • 打赏
  • 举报
回复
比如我有一个公共变量startstring
这个值是启动线程的时候才获取的
在启动线程一的时候startstring = a
在启动线程二的时候startstring = b
所以先启动线程一的时候startstring = a
在线程一还没有结束时启动线程二,这会儿startstring = b
我想实现的是在运行线程一的时候始终都为startstring = a
运行线程二的时候始终都为startstring = b



sanjie88 2006-03-08
  • 打赏
  • 举报
回复
那在1,2都启动的时候那个变量的值是什么呀,我有点不明白LZ的意思
夜雨悠扬 2006-03-08
  • 打赏
  • 举报
回复
在对startstring进行赋值的时候判断一下就可以了
方法如下:
if string="" then
string=a
endif
thread1 = new thread(addressof(method1))
if string="" then
string=b
endif

thread2 = new thread(addressof(method2))

sub method1()
'线程的内的处理
string=""
end sub

sub method2()
'线程的内的处理
string=""
end sub
  • 打赏
  • 举报
回复
老大.你是不是定义了一个全局变量?这样就可以了.thread1 = new thread(addressof(method))
thread2 = new thread(addressof(method))
private sub method()
dim startstring as String
end sub
这样的话就不会互相影响了啊
jdhsd 2006-03-08
  • 打赏
  • 举报
回复
现在线程内的变量就是startstring,
他随着新线程的启动,他就变成离当前最近的线程所获取的参数

就变了,
HBIBH 2006-03-08
  • 打赏
  • 举报
回复
在线程1,2里面分别获取startstring的值,赋给线程内的一个变量,线程内的操作都最这个变量进行.不再改变startstring的值就行了吧

不知道我理解得对不对
jdhsd 2006-03-08
  • 打赏
  • 举报
回复
现在的问题是在启动新线程的时候,这个值就被更新为最新的值,
我想实现的是新线程启动的时候不更改已经启动线程里面所有到的值

16,554

社区成员

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

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