尝试理解[SynchronizationAttribute][1]
reentry是必需的标志。
根据albahari:
如果同步属性应用了可重入 参数为真:
[Synchronization(true)]
然后同步上下文的锁定 当执行离开上下文时暂时释放。
根据我的理解,当程序离开具有上下文代码的对象所拥有的函数时,同步上下文总是被释放。
下面的示例在[Synchronization(true)]
情况下运行,例如根本没有同步内容,而[Synchronization(false)]
个案块会按预期阻止,并且通过感受同步上下文让我感到高兴。
[Synchronization(true)]
public class DeadLock: ContextBoundObject
{
public DeadLock Other;
public void Demo() { Thread.Sleep(1000); Console.WriteLine("demo "+ Thread.CurrentThread.ManagedThreadId); ; Other.Demo(); }
public static void Hello() { Console.WriteLine("hello"); }
}
class Program
{
static void Main(string[] args)
{
DeadLock d1 = new DeadLock();
DeadLock d2 = new DeadLock();
d1.Other = d2;
d2.Other = d1;
new Thread(d1.Demo).Start();
Console.WriteLine("startng d2.Demo");
d2.Demo();
}
}
Synchronization(true)和完全没有同步上下文的类之间有什么区别?