Threading and static methods in C#
这里以一个无意义的扩展方法为例:
1
2 3 4 5 6 7 8 9 10 |
public static class MyExtensions { public static int MyExtensionMethod(this MyType e) { int x = 1; x = 2; return x |
说一个执行线程完成到并包括以下行:
1
|
x = 2;
|
处理器然后上下文切换,另一个线程进入相同的方法并完成该行:
1
|
int x = 1;
|
假设第一个线程创建和分配的变量 “x” 与第二个线程创建和分配的变量 “x” 位于单独的堆栈上,我是否正确,这意味着此方法是可重入的?
是的,每个线程都有自己独立的局部变量。即使被多个线程同时调用,这个函数也总是返回 2。
是的,这是一个正确的评估。
的调用之间共享
很简单,是的。静态方法仅意味着可以在没有对象的情况下调用该方法。方法中的局部变量仍然是局部的。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/269550.html