假设有一个类 A 和它的一个实例classA
,类 A 有四个子类,名为 a11、a12、a21 和 a22。
A 的构造函数在 Parallel.For 的帮助下在单独的线程中创建 a11、a12、a21、a22。
//interior of A
A A11;
A A12;
A A21;
A A22;
public A()
{
Parallel.For(0,4,i=>
{
if(i==0) {A11= new A(/*recursion limit parameter*/);}
if(i==1) {A12= new A(/*recursion limit parameter*/);}
if(i==2) {A21= new A(/*recursion limit parameter*/);}
if(i==3) {A22= new A(/*recursion limit parameter*/);}
});
}
问题:是否有 %100 确定 A11..A22 在 Parallel.For 退出时不会被破坏?
例子:
1)主线程发起构造函数。
2)Parallel.For 启动四个并发线程。
3)四个线程得到了A类的副本(还没有创建,它们如何并发工作?)
4)他们每个人都在自己的副本中创建一个新对象(只有创建者线程才能看到?)
5)Parallel.for 结束
选择使用哪个副本?如果一切都是真实的,那么这一定是一个连续的动作。但是使用 parallel.for 时创建时间会减少。
A11..A22 也有四个组件,这会更深入,直到递归达到限制。
谢谢。