.NET如何定义执行相同代码的线程之间的边界

ima*_*mak 3 .net c# multithreading

当多个线程运行相同的代码时,CLR如何设法让它们相互超越.AppDomain管理这些线程并定义不同线程之间的边界,即使它们可能在相同的代码(可能还有数据)上运行吗?如果是这样的话?

TIA

Mar*_*ell 7

简单; 对于方法变量(不包括捕获的变量,迭代器块等),变量在堆栈上.每个线程都有不同的堆栈.这与单个线程上的递归方法没有什么不同 - 方法变量是每个调用独立且独立的.

对于堆上的对象...... 它不会!! .没有界限; 没有保护.如果您没有正确同步等,则会损坏您的数据.

简而言之,这是你的工作.