上一篇《C#中多线程的那点事儿-Thread入门》,我们掰扯了一下Thread的最基本用法。
我们说到,多线程,可以利用CPU的多个核心,并行执行,从而提升程序的效率。
有个聪明的同学,小明,向我问到:那是不是线程开得越多,程序运行就越快呢?
为了搞明白这个问题,外老师专门写了个测试程序,用来掰扯掰扯多线程的代价那点事。
实例演练
先来一个Data类,模拟某种数据:
class Data{ public Data(int id) { ID = id; } public int ID { get; set; } public void DoSomeThing() { ID += 1; }}
Data.DoSomeThing模拟某种操作,这里简单在做一个加法。
然后我们生成一批测试数据:
static IList MakeData(){ var dataNum = 100; var datas = new List(dataNum); for (int i = 0; i < dataNum; i++) { datas.Add(new Data(i)); } return datas;}
下面用单线程调用全部数据的DoSomeThing方法,来模拟批量数据处理:
static void SingleThread(IList datas){ foreach (var item in datas) { item.DoSo