我对多线程是个新手(就像我今天晚上开始学习的那样),而且我刚刚写了一个我自己制作的多线程的刮板。但它只在两个线程上抓取相同的数据两次,而不是单独抓取,这就是我将其设为多线程的原因(为了提高时间效率
例如,如果我正在抓取:
1
2
3
4
5
6
7
8我将程序设置为使用2个线程,输出类似于:
1
2
1
2
3
3
4
5
5
4
6
7
6
8
7
8基本上,与多线程抓取数字列表的速度不同,它为每个线程抓取整个列表一次,这会导致输出中的重复(我非常确定抓取速度是相同的)
抱歉,如果这一切不清楚或者听起来很愚蠢,我真的是多线程的新手,就像我说的。如果我在帖子中说得不清楚,我会把一切都说清楚。
发布于 2014-04-26 19:00:27
您可以使用Parallel-class。看看这个:http://msdn.microsoft.com/en-us/library/dd537608(v=vs.110).aspx
Parallel.ForEach(yourList, (listItem) =>
{
Debug.WriteLine(listItem);
});有关更多详细信息,请查看我在上面发布的网站。
发布于 2014-04-26 18:59:46
一种常见的方法是使用job pool,让您的主线程将数据提供给工作线程,然后工作线程只处理它获得的数据。因此,您没有任何重复项。你并不是真的使用多线程,你只需要做两次。
根据你的具体问题,可能会有其他方式,比如两个线程只做第二个项目,或者类似的事情。
https://stackoverflow.com/questions/23309838
复制相似问题