gpt4 book ai didi

c# - 哪种方式最适合线程同步?

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:53 25 4
gpt4 key购买 nike

哪个最稳健?有什么区别?

1.

[Synchronization]
public class Person : ContextBoundObject
{
public void Print(){
Console.WriteLine ("Start");
Thread.Sleep (100);
Console.WriteLine ("END");
}
}

2.

        private readonly object obj = new object();
public void Print(){
lock (obj) {
Console.WriteLine ("Start");
Thread.Sleep (100);
Console.WriteLine ("END");
}
}

顺便说一句,主要的:

            Person a = new Person ();
for (int i = 0; i < 10; i++) {
new Thread (a.Print).Start ();
}

我们可以将这两种方式互换使用吗?

最佳答案

SynchronizationAttributeContextBoundObject 是 .NET Remoting 概念;它们不适用于通用代码,只能在完整的 .NET 框架上工作(不适用于 Windows Phone、Windows 应用商店应用程序或 Silverlight)。此外,它会强制您让您的类继承 ContextBoundObject,这可能是不可取的。

另一方面,lock 将在任何地方工作,并且不会强制您继承特定的类;它也更细粒度,因为您可以将它仅应用于需要它的代码,而不是整个类。

因此,除非您的代码特别与远程处理有关,否则我建议不要使用 [Synchronization]

关于c# - 哪种方式最适合线程同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27344873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com