gpt4 book ai didi

.net - 类实例在单个线程中被调用和销毁时是否是线程安全的?

转载 作者:行者123 更新时间:2023-12-03 13:12:42 25 4
gpt4 key购买 nike

我认为我对线程安全的范围和实践感到非常困惑。 MSDN文档和许多评论员通常说实例方法通常不是线程安全的。但是,如果仅在一个线程中创建和销毁一个类实例,我们是否还会担心线程安全性?

考虑以下。我们创建一个线程,并在该线程内创建TestMethod的多个实例,该实例将修改实例的类变量。整个类实例线程(包括共享类变量)是否安全?

Class InstancedClass
Private testVar As Integer
Private Shared sharedTestVar As Integer

Public Sub TestMethod()
'Do stuff to modify testVar/sharedTestVar
End Sub
End Class

Public Class CallingClass
Public Sub Main()
Dim t As New Threading.Thread(Sub()
Dim newInstance As New InstancedClass
newInstance.TestMethod()
End Sub)
t.Start()

Dim t2 As New Threading.Thread(Sub()
Dim newInstance As New InstancedClass
newInstance.TestMethod()
End Sub)
t2.Start()
End Sub
End Class

问题摘要:

1.)如果类实例是完全在线程中创建和销毁的,它们是否是线程安全的?

2.)对此进行扩展,如果不触及线程范围之外的外部实例,属性和变量,所有代码线程是否安全?

3.)如果类没有共享属性,则其共享方法线程安全吗?

最佳答案

1)是的,如果它们的作用域不再扩展,它们的方法就不会在实例边界之外进行任何更改,并且它们的共享成员(如果有)本身也是线程安全的(请参见答案3)。

2)是,出于与1几乎相同的原因。

3)是的,如果他们所做的任何事情都不会改变任何其他对象。例如,共享的Multiply方法通常是线程安全的。

关于.net - 类实例在单个线程中被调用和销毁时是否是线程安全的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com