我的应用程序使用很多线程,并且每个线程都使用我的AddDetailLog函数在全局textBox中添加线程的进度,因此我可以跟踪每个线程的进度。这个函数每秒可以被调用500多次,当我使用VS2015分析器时,我发现这个函数占用了我50%的CPU。当我加载超过150个线程时,我的CPU是100%,所以我真的需要优化这个函数。使用多线程优化的函数:
public void AddDetailLog(string text
以下代码:可能被优化为如果x只在另一个线程中分配。见。答案是通过将x设置为volatile来解决这个问题。然而,根据这三位贡献者的说法,这似乎并不是正确的方法(综合声誉超过100万:)
Hans :“千万不要假设它在多线程场景中很有用。”假设一个Backgroundworker像对待任何其他多线程一样(而不是有一些防止优化的内置机制),那么如何防止糟糕的优化呢?