Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
温莎城堡';s瞬态对象和.NET4.0';s Parellel.For<&燃气轮机;()_.net_Castle Windsor_Task Parallel Library_Castle - Fatal编程技术网

温莎城堡';s瞬态对象和.NET4.0';s Parellel.For<&燃气轮机;()

温莎城堡';s瞬态对象和.NET4.0';s Parellel.For<&燃气轮机;(),.net,castle-windsor,task-parallel-library,castle,.net,Castle Windsor,Task Parallel Library,Castle,我使用ANTLR实现了一个复杂的抽象语法树解析器/生成器,并将每个节点的状态作为瞬态windsor对象进行维护。所以,在解析器启动之前,我会先安装container.Install(FromXml),其中每个状态都有一个大XML,它将在树解析器中使用 问题是,我要在树上按顺序向下移动至少30个级别,其中包含非常繁重的内务管理状态对象,用于2000行的表格数据,每行有200个字段,因此为了减少时间,我尝试利用.NET的parellel for循环,如下所示: // for each row Pa

我使用ANTLR实现了一个复杂的抽象语法树解析器/生成器,并将每个节点的状态作为瞬态windsor对象进行维护。所以,在解析器启动之前,我会先安装container.Install(FromXml),其中每个状态都有一个大XML,它将在树解析器中使用

问题是,我要在树上按顺序向下移动至少30个级别,其中包含非常繁重的内务管理状态对象,用于2000行的表格数据,每行有200个字段,因此为了减少时间,我尝试利用.NET的parellel for循环,如下所示:

// for each row 
Parellel.For(0, N (i) => 
{ 
   // for each column 
   Parellel.For(0, N, (i) => 
   { 
      // use (i) in constructing a XML node tree using windsor container invoked states for       
      each node. 
   } 
});
但是当我切换到Parellel时,与传统的For循环相比,我开始在状态中出现错误,我的跟踪计数器、回溯字典都在说已经调用的状态和没有调用的状态


我的容器本身是用单件包装的,这有关系吗?这些对象是在瞬态中动态创建的,因此不会每次调用container.resolve()都为我创建新对象。在resolve()和release()调用之间工作的两个线程是否会有问题,因为每个线程都应该有自己的状态对象???

我们需要更多的信息。一般来说,如果您正在访问循环外的状态(当您说跟踪计数器、回溯字典等时,您就是这样),那么您不能将
作为
循环,然后将其更改为
并行。您需要指出这些资源是什么,以便定义问题。