0

我想对方法进行并行调用。在这种方法中,我计算了一些值(非常快)并将该计算的值写入数据库表中。

因此我使用线程池

ThreadPool.QueueUserWorkItem((state) => {
               method();
            });

经过一段时间的计算(不确定,发生这种情况的时间会有所不同,有时在几分钟后,有时在几个小时后)线程池已满,但不是方法()的线程,而是我的mysql类的线程来电MySqlCommand.ExecuteNonQuery

有谁知道如何避免这种情况?在 mysql 类的文档中,我发现您无法终止正在执行的查询,但如何避免此类问题?

4

1 回答 1

5

您是否需要在计算出所有值后将它们写入数据库,还是可以等到有一些值,然后在插入大量它们的地方进行批量更新?

如果所有线程都尝试同时写入同一个表,您可能会在这里遇到锁定问题。所以尝试将数字存储在本地,然后大批量提交

于 2009-09-23T14:30:31.553 回答