Erg,我正在尝试使用Reflector在BCL中找到这两个方法,但找不到它们.这两个片段之间的区别是什么?
A:
IEnumerable<string> items = ...
Parallel.ForEach(items, item => {
...
});
Run Code Online (Sandbox Code Playgroud)
B:
IEnumerable<string> items = ...
foreach (var item in items.AsParallel())
{
...
}
Run Code Online (Sandbox Code Playgroud)
使用一个比另一个有不同的后果吗?(假设我在两个示例的括号内部所做的事情都是线程安全的.)
我有一个功能代码,它将一个属性的字符串拆分为类的列表:Dataframe由string, string, string.
现在我声明一个空的Dataframe2(string,string[], string)并使用将项添加到列表中Add
class Program
{
public static string[] SPString(string text)
{
string[] elements;
elements = text.Split(' ');
return elements;
}
//Structures
public class Dataframe
{
public string Name { get; set; }
public string Text { get; set; }
public string Cat { get; set; }
}
public class Dataframe2
{
public string Name { get; set; }
public string[] Text { get; set; }
public string Cat { get; set; } …Run Code Online (Sandbox Code Playgroud) 我有点像'网络解析器',除了它只是一个网站,它将一次解析许多不同的页面.
目前,我需要以相对快速的方式解析300,000个页面(我只抓取了一小部分不需要太长时间才能完成的信息,每个页面最多花费约3秒钟网络).当然,900,000秒到天= 10天,这是可怕的表现.我想将此减少到最多几个小时,我对于请求数量的时间是合理的,但它仍然需要"快速".我也知道我不能一次只做300,000,或者网站会阻止我的所有请求,所以每次请求之间都要有几秒钟的延迟.
我目前在单个foreach循环中处理它,没有利用任何多线程,但我知道我可以利用它,我不知道我应该采取什么样的路径,无论是线程池,还是其他螺纹系统或设计的类型.
基本上,我正在寻找有人使用多线程向我指出正确的效率方向,这样我就可以轻松地解析我最终解析那么多页面的时间,某种系统或结构用于线程化.
谢谢