VB .NET共享函数如果同时多次调用

Meh*_*nis 4 vb.net shared accessibility function

考虑一下我有一个共享功能: -

Public Shared Function CalculateAreaFromRadius(ByVal radius As Double) As Double

    ' square the radius...
    Dim radiusSquared As Double
    radiusSquared = radius * radius

    ' multiply it by pi...
    Dim result As Double
    result = radiusSquared * Math.PI

    'Wait a bit, for the sake of testing and 
    'simulate another call will be made b4 earlier one ended or such
     for i as Integer = 0 to integer.Max
     Next

    ' return the result...
    Return result

End Function
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 如果我在同一个vb .net应用程序中有两个或多个线程,并且每个线程同时使用不同的RADIUS调用共享函数,那么它们每个都会获得自己的AREA吗?

  2. 我想知道每次调用函数是否使用相同的局部变量或者每次调用都会创建局部变量的新实例?

  3. 以上问题的答案是否相同如果我有多个(2+)单线程应用程序并且它们都使用不同的RADIUS值同时调用该函数?

我会感激你的回应.谢谢.

Tho*_*mas 6

1)如果我在同一个vb .net应用程序中有两个或多个线程,并且每个线程同时使用不同的RADIUS调用共享函数,那么它们每个都会获得自己的区域吗?

是的,因为半径值是按值传递的,并且该方法只使用本地声明变量.

2)我想知道每次调用函数是否使用相同的局部变量或者每次调用都会创建局部变量的新实例?

每次调用都会创建其局部变量的新实例.

3)上述问题的答案是否相同如果我有多个(2+)单线程应用程序并且它们都使用不同的RADIUS值同时调用该函数?

是.同样,因为没有共享的信息存储,并且因为所有输入都是按值传递的,所以它是线程安全的.