公共语言架构提供了三种策略来同步访问实例和静态方法以及实例属性,这三种策略是: 1. 同步上下文 2. 同步代码区域 3. 手动同步 同步上下文 上下文是一系列对象集合在执行时常见的属性或者使用规范。可以被添加的上下文属性包括同步,线程关联以及事务。简而言之,一个上下文 ...
第三种同步策略关注手动同步技术,.NET Framework 提供了一个经典的技术套件。他们给了程序员使用类似WIN 线程API的底层线程API来创建和管理多线程应用程序的能力。 下面的表显示了System.Threading 命名空间中可以用于手动同步的一些类。 ManualResetEvent 类 一个ManualResetEvent对象仅能处理signaled true 或者non sign ...
2012-02-10 12:00 1 3403 推荐指数:
公共语言架构提供了三种策略来同步访问实例和静态方法以及实例属性,这三种策略是: 1. 同步上下文 2. 同步代码区域 3. 手动同步 同步上下文 上下文是一系列对象集合在执行时常见的属性或者使用规范。可以被添加的上下文属性包括同步,线程关联以及事务。简而言之,一个上下文 ...
.NET Framework 提供了很多System.Threading,System.EnterpriseService 和 System.Runtime.Compiler 命名空间中的很多类来帮助程序员开发线程安全代码。下表简要地描述了.NET Framework 中的一些同步类 ...
AutoResetEvent 类 AutoResetEvent类的工作方式与ManualResetEvent类似。它会等超时事件发生或者信号事件发生然后通知正在等待的线程。ManualResetEvent和AutoResetEvent之间最重要差别之一是AutoResetEvent ...
Monitor 类的TryEnter() 方法在尝试获取一个对象上的显式锁方面和 Enter() 方法类似。然而,它不像Enter()方法那样会阻塞执行。如果线程成功进入关键区域那么TryEnter()方法会返回true. TryEnter()方法的三个重载方法中的两个以一个timeout类型值 ...
一个ReaderWriterLock 类定义一个实现单写多读语义的锁。这个类通常用在能被多个线程读取但是仅能被一个线程写入的文件操作时使用。下面是ReaderWriterLock类中的四个主要方法: a. AcquireReaderLock(): 这个重载方法获取一个读者锁,接受一个整型 ...
尽管使用线程同步对线程安全来说是必须的,但是如果没有用好的话就可能导致死锁。因此,理解什么是死锁并知道如何避免死锁是非常重要的。当两个或两个以上的线程等待两个或多于两个锁被释放然后程序中的逻辑导致锁永远都不会被释放时死锁就发生了。图3描述了一个典型的死锁场景。 图3 在上图中,线程 ...
概要 在之前章节,我们已经讨论过线程在开发多用户应用程序时扮演的重要角色。我们已经使用线程来解决一些重要的问题,比如让多个用户或者客户端在同一时间访问同一个资源。然而,在学习过程中我们忽略了一个问题,现在到了处理这个问题的时候了:如果一个用户改变了资源的状态,同时另外一个用户也想改变同一个资源 ...
在这部分我们将看两个大的例子。首先,我们将看一下创建线程安全的包装器的例子,然后看一下数据库连接池例子。 实现自己的线程安全包装器 实现自己的线程安全包装器主要基于你可能不想让类库中的每个类都是线程安全的,而使用同步也会带来性能问题的事实。你可能想要为开发人员提供一个是否使用一个同步类的选择 ...