c#多线程递增

本文关键字:多线程 | 更新日期: 2023-09-27 17:49:42

我正在尝试制作一个基本计数的应用程序(并在此过程中学习c#)。越快越好

这就是为什么最初我在考虑多线程。然而,在我看来,这是不可能的,因为多线程的全部意义在于同时并行地运行代码,对吧?

那么,我可以使用多线程吗?或者有什么让它增加得更快的技巧吗?

谢谢。

c#多线程递增

您必须划分数字范围。例如,不是在一个线程中从0递增到999'999,而是让四个线程分别从0递增到249'999,从25 '000递增到499'999,从50'000递增到749'999和从75 '000递增到999'999。

和看看任务并行(任务并行库)。

不要错误地创建一百万个增量一次的任务!多任务处理的开销实际上会大大降低进程的速度。如果每个任务都必须执行大量的工作,那么实际上只能提高速度。

为了获得最佳性能,对于单个变量的简单递增,我会使用经常被忽略的Interlocked类。

private long SingleVariable = 0;
public void MultiThreadedMethod()
{
   Interlocked.Increment(SingleVariable);
}

虽然在这个简单的例子中没有感觉到多线程的好处,但在性能方面,因为我认为缓存(缓存一致性网络)带宽是这种情况下的瓶颈。

然而,这种模式在多线程环境中通常很有用,在多线程环境中,多个线程可能正在完成一个工作单元,然后增加一个中央计数器来跟踪线程之间的总进度。联锁的替代方案是使用监视器。