草庐IT

StockQuotation

全部标签

c# - 为什么我这里有锁?

请参阅以下表示并行foreach完成的工作的并发性能分析:在循环内,每个线程从数据库中读取数据并进行处理。线程之间没有锁,因为每个线程处理不同的数据。由于未知原因,似乎在foreach的所有线程中都有周期性锁定(请参见黑色垂直矩形)。如果您看到选定的锁定段(深红色段),您将看到堆栈显示锁定在StockModel.Quotation构造函数的线程。那里的代码只是构造了两个空列表!我在某处读到这可能是由GC引起的,所以我将垃圾收集更改为在服务器模式下运行:我得到了一点改进(大约快了10%-15%),但我仍然到处都有垂直锁。我还向所有数据库查询添加了WITH(NOLOCK),因为我只是在读取

c# - 为什么我这里有锁?

请参阅以下表示并行foreach完成的工作的并发性能分析:在循环内,每个线程从数据库中读取数据并进行处理。线程之间没有锁,因为每个线程处理不同的数据。由于未知原因,似乎在foreach的所有线程中都有周期性锁定(请参见黑色垂直矩形)。如果您看到选定的锁定段(深红色段),您将看到堆栈显示锁定在StockModel.Quotation构造函数的线程。那里的代码只是构造了两个空列表!我在某处读到这可能是由GC引起的,所以我将垃圾收集更改为在服务器模式下运行:我得到了一点改进(大约快了10%-15%),但我仍然到处都有垂直锁。我还向所有数据库查询添加了WITH(NOLOCK),因为我只是在读取