【发布时间】:2021-12-30 20:51:37
【问题描述】:
不确定这是否可能没有大量开销,但我想我会问。
这是当前进程:
Parallel loop over locations
Sequential Loop over SQL load operations for each location
这工作得很好,但如果同时执行超过 1 个线程,则一个过程往往会死锁。
是否有可能确保一旦死锁过程运行,所有其他线程在尝试执行相同的过程时都等待直到它完成?
我感觉涉及到锁定,但我没有做足够的事情来确定。
【问题讨论】:
-
你试试锁吗?
-
您可以使用
lock来确保一次只有一个线程可以执行某些操作。听起来很奇怪,好像它会破坏并行执行的目的。 -
或者换个角度:你能弄清楚为什么程序会锁定并修复它吗?
-
嗯,我会尝试使用锁,看看是否能满足我的需要。被调用的过程相对复杂,我可以理解它为什么会死锁。不幸的是,优化这将是一项繁重的工作。
标签: c# multithreading loops parallel-processing locking