我是多线程的新手(就像我今晚开始学习的那样)我刚写了一个刮刀,我做了多线程。但它只是在两个线程上擦除相同的数据两次而不是单独抓取它,这就是我使它成为多线程的原因(时间效率
例如,如果我正在抓:
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
基本上,不是多个线程更快地抓取数字列表,而是为每个线程擦除整个列表一次,这会导致输出中的重复(并且我非常确定相同的抓取速度)
对不起,如果其中任何一个不清楚或听起来愚蠢或者其他什么,我就像我说的那样对多线程很新。如果我在帖子中不清楚,我会清除任何事情
答案 0 :(得分:1)
您可以使用Parallel
- 类。
看看这个:http://msdn.microsoft.com/en-us/library/dd537608(v=vs.110).aspx
Parallel.ForEach(yourList, (listItem) =>
{
Debug.WriteLine(listItem);
});
有关详细信息,请查看我上面发布的网站。
答案 1 :(得分:0)
一种通用方法是使用job pool,您的主线程将工作线程提供给工作线程,然后工作线程只对其获取的数据进行处理。因此,您没有任何重复。你并没有真正使用多线程,你基本上只做了两次。
根据您的具体问题,可能还有其他方式,例如两个线程只执行每个第二项或类似的事情。