锁定当前线程:可能的WTF?

Sma*_*ery 5 c# multithreading locking

在查看一些旧代码时,我们遇到了以下代码:

lock (System.Threading.Thread.CurrentThread) // Critical Section - no interrupting.
Run Code Online (Sandbox Code Playgroud)

我们的第一个反应是"WTF" - 代码锁定在当前线程上,这是每个线程上的一个不同的对象(除了在递归的情况下,这将是愚蠢的锁定,然后).看起来这个锁没有任何用途.我们想知道这是否确实是WTF,或者它是否真的有用.

NG.*_*NG. 4

从这行代码来看,它看起来就像是一个WTF,但如果线程对象被传递给其他线程并用作锁,那就有意义了。然而,使用线程作为锁似乎是一种非常糟糕的做法。