DotNet对同步的支持

来源:互联网 发布:淘宝运营表格 编辑:程序博客网 时间:2024/05/22 03:05

.NET Framework在System.Threading,System.EnterpriseServices和System.Runtime.Compiler命名空间中提供了一些类,程序员可以使用这些类开发线程安全的代码.下面是这些类的简单说明:


Monitor:
Monitor对象用于锁定重要的代码段,这样,在任一时刻就只能有一个线程访问重要的代码段.Monitor对象可帮助确保重要代码段的原子性.

Mutex:
Mutex对象类似于Monitor对象,但Mutex对象只允许一个线程式访问在进程中的资源.Mutex的重载构造函数可以用于指定Mutex的所属关系和名称.

Interlocked
Interlocked类包含如下的方法,CompareExchange().Decrement(),Exchange()和Increment(),这些方法为同步访问由多个线程共享的变量提供了一种简单机制.

AutoResetEvent,ManualResetEvent
AutoResetEvent,ManualResetEvent用于通知一个或多个等待线程:事件已经触发.这些类都是不能继承的.

SynchronizationAttribute
SynchronizaitionAttribute确保同一时刻只有一个线程可以访问对象,这种同步进程是自动的.不需要显式锁定任何代码段.

MethodImplAttribute
这个属性告诉编译器方法该如何实现.

    一 MethodImplAttribute 类
    System.Runtime.CompilerService命名空间包含的一些属性将影响CLR在运行期间的行为.MethodImplAttribute 就是这样一个属性,它告诉CLR方法是如何实现的. MethodImplAttribute的一个构造函数把 MethodImplOptions 枚举作为其参数,MethodImplOptions枚举有一个字段 Synchronized, 它指定在任一时刻只允许一个线程访问这个方法,这类似使用 lock 关键字.使用这个属性的方法如下:
using System.Runtime.CompilerServier;
using ......
.....
       [MethodImpl(MethodImplOptions.Synchronized)]
       public void MethodName(params)
       {
       }
.....
       这样,当多个线程同时调用这个方法时,会保证只有一个线程运行,其它线程处于等待状态.

原创粉丝点击