多线程并不是一定能提高代码的运行速率
一般是在执行多个任务的时候,为了防止某个比较慢的任务阻塞,才会采用多线程充分利用cpu
使用多线程很简单,Task.Run就能启动一个异步线程
static void Test() {
Task.Run(() => {
while (true) {
Thread.Sleep(1000);
Console.WriteLine("异步任务1");
}
});
Task.Run(() => {
Thread.Sleep(1000);
Console.WriteLine("异步任务2");
});
while (true) {
Thread.Sleep(1000);
Console.WriteLine("主线程任务");
}
}
谢谢大佬
想让代码效率提高不止多线程一种手段。
建议先做个benchmark测试,看看哪一块是耗时最多的(有个不知道谁说的定律:程序80%的运行时间是消耗在20%的代码上)。
首先应该考虑能否在现有代码本身做优化,比如是否有的地方发生了没有必要的复制,有的地方可以采取更优的算法等等。
然后可以考虑异步,尤其是在IO操作的时候,异步是非常好的选择。
最后再看多线程,可以考虑Parallel.For
和Parallel.ForEach
,也可以像楼上那样开几个task跑。
谢谢大佬,我可以试试嘛