[英]Threading and static methods in C#
以下是一个无意义的扩展方法示例:
public static class MyExtensions
{
public static int MyExtensionMethod(this MyType e)
{
int x = 1;
x = 2;
return x
}
}
假设执行线程完成并包括该行:
x = 2;
处理器然后上下文切换,另一个线程进入相同的方法并完成该行:
int x = 1;
假设第一个线程创建并分配的变量“x”在一个单独的堆栈上由第二个创建并分配的变量“x”,我是否正确,这意味着该方法是可重入的?
是的,每个线程都有自己独立的局部变量。 即使多个线程同时调用,此函数也将始终返回2。
是的,这是一个正确的评估。 x
是方法局部变量,不会在MyExtensionMethod
调用之间共享。
很简单,是的。 静态方法仅意味着可以在没有对象的情况下调用该方法。 方法中的局部变量仍然是本地的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.