回 帖 发 新 帖 刷新版面

主题:请教一个线程问题

在module中有一个过程:

public sub test()
  '从access数据库中读出记录
  '将该记录保存到sql server数据库中
end sub

在form中,将针对该过程启动多个线程:

dim s1 as New System.Threading.Thread = System.Threading.Thread(AddressOf test)
dim s2 as New System.Threading.Thread = System.Threading.Thread(AddressOf test)
dim s3 as New System.Threading.Thread = System.Threading.Thread(AddressOf test)

等等...

这样同时执行test过程的时候,会不会造成test过程中的变量混乱?应该如何避免?

谢谢!请各位高手帮助指点!

回复列表 (共3个回复)

沙发

同时执行的时候,
如果test中对共有的本地变量有编辑操作,那要进行死锁保护

板凳

[quote]同时执行的时候,
如果test中对共有的本地变量有编辑操作,那要进行死锁保护[/quote]

谢谢您的回复!

是否可以进一步指点一下?

在test中,会有大量的字符类型的变量,分别用来临时存储从access表中取出的记录的每个字段内容,然后再将这些变量的值insert到sql server数据库中。

请问:这种情况下,是否需要保护?

也就是当线程1中的局部变量d1的值等于“abcd”的时候,如果线程2也赋予了局部变量d1的值为“1234”,那么是否会发生冲突?

换一句话说,不同的线程是工作在不同的内存段中的吗?它们之间的变量是相通的吗?(当然指过程内部的局部变量)

3 楼

不同线程中的局部变量是相互独立的,不用保护,不过这要考虑你的数据库的死锁问题了……(不过一般的数据库解决三个并发处理还是没问题的)

我来回复

您尚未登录,请登录后再回复。点此登录或注册