C# NET Framework中线程安全类的示例?

C# NET Framework中线程安全类的示例?,c#,.net,multithreading,events,locking,C#,.net,Multithreading,Events,Locking,我目前正在编写应该是线程安全的代码。大量的异步调用和事件等通常需要大量工作才能保持同步和线程安全 在.NETFramework中是否有处理这类事情的类,我可以查看(反编译)以了解应该如何完成这些事情?越复杂越好… 尽管目标是Windows而不仅仅是.NET,但Joe Duffy的书值得一提: 尽管针对Windows而不仅仅是.NET,乔·达菲的书还是值得一提的:有几种方法可以保持事物原子化。有些类支持围栏,这样代码就可以保证按特定顺序执行。您可以使用关键字volatile来确保变量访问是原子的(

我目前正在编写应该是线程安全的代码。大量的异步调用和事件等通常需要大量工作才能保持同步和线程安全

在.NETFramework中是否有处理这类事情的类,我可以查看(反编译)以了解应该如何完成这些事情?越复杂越好…

尽管目标是Windows而不仅仅是.NET,但Joe Duffy的书值得一提:


尽管针对Windows而不仅仅是.NET,乔·达菲的书还是值得一提的:

有几种方法可以保持事物原子化。有些类支持围栏,这样代码就可以保证按特定顺序执行。您可以使用关键字volatile来确保变量访问是原子的(每次使用时都从内存读取),并且没有幻象读取。这些只是一些工具;我建议用一个简单的谷歌“原子C,F”

有几种方法可以保持事物的原子性。有些类支持围栏,这样代码就可以保证按特定顺序执行。您可以使用关键字volatile来确保变量访问是原子的(每次使用时都从内存读取),并且没有幻象读取。这些只是一些工具;我建议用一个简单的Google“atomic C#,F#…”

MSDN提供了一些关于.NET中异步编程的好信息。退房


还可以查看System.Threading中的和类。MSDN提供了一些关于.NET中异步编程的好信息。退房


还可以查看系统中的和类。线程

谢谢你的回答,但是这里的线程安全性非常弱。@NoPyGod:erm,说什么?没有线程安全级别。代码要么是线程安全的,要么不是。您的问题明确要求“在.NET Framework中线程安全类的示例?”@Mitch“包装器的工作原理是在每次添加或删除操作时锁定整个集合。因此,试图访问集合的每个线程都必须等待轮到它使用一个锁。这是不可扩展的,并且可能会导致大型集合的性能显著降低。此外,设计没有完全免受竞争条件的影响。“…使用单个锁排队访问单个对象是一个非常基本的概念。寻找更复杂的示例。@NoPyGod-如果你的线程安全技能比Microsoft工程师好得多,不要问他们的工作示例。@NoPyGod:你完全错过了这篇文章的真正内容!它从讨论旧的appr开始oach从.NET 1.0同步集合(这是您在评论中引用的部分)。然后介绍了.NET 4.0中引入的新并发集合,它们是无锁的、高度可扩展的,而且,我向您保证,非常高级。谢谢您的回答,但是这里的线程安全性非常弱。@NoPyGod:erm,说什么?没有线程安全度。代码要么是线程安全的,要么不是。您的问题很明确ly询问“在.NET Framework中线程安全类的示例?”@Mitch“包装器通过在每次添加或删除操作上锁定整个集合来工作。因此,试图访问集合的每个线程都必须等待轮到它使用一个锁。这是不可扩展的,并且可能会导致大型集合的性能显著降低。此外,设计没有完全免受竞争条件的影响。“…使用单个锁排队访问单个对象是一个非常基本的概念。寻找更复杂的示例。@NoPyGod-如果你的线程安全技能比Microsoft工程师好得多,不要问他们的工作示例。@NoPyGod:你完全错过了这篇文章的真正内容!它从讨论旧的appr开始oach从.NET 1.0同步集合(这是您在评论中引用的部分)。然后,它将继续描述.NET 4.0中引入的新并发集合,这些集合是无锁的、高度可扩展的,而且,我向您保证,非常高级。非常熟悉锁、互斥体、信号量等。只是寻找在.NET框架中使用这些东西的强示例。非常熟悉锁、互斥体、信号量res等。只是想寻找这些东西在.NET framework中使用的强大示例。我对这两个类都非常熟悉。只是想寻找它们在.NET framework中使用的示例。@NoPyGod:启动Reflector或类似工具,搜索.NET framework中使用Monitor和Mutex的类。我对这两个类都非常熟悉这些类。只是查找它们在.NET framework中使用的示例。@NoPyGod:启动Reflector或类似程序,搜索.NET framework中的哪些类使用监视器和互斥体。当多个线程可以同时访问共享资源时,请使用锁。当多个线程可以同时访问共享资源时,请使用锁同时。