线程同步:System.Core中新的读写锁

简介:

读写锁是进程同步中经常使用的锁。

在System.Core中ReaderWriterLockSlim类比较好用,它是基于写优先策略的。它还支持从读锁升级到写锁,称为Upgradable Mode.

简单测试代码如下:

private static void Test()
{
    ReaderWriterLockSlim locker = new ReaderWriterLockSlim();
    ParameterizedThreadStart reader = o =>
    {
        var innerlocker = locker;
        int number = Convert.ToInt32(o);
        while (true)
        {
            locker.EnterReadLock();
            Console.WriteLine("Reading  " + number);
            Thread.Sleep(500);
            locker.ExitReadLock();
        }
    };
    ParameterizedThreadStart writer = o =>
    {
        var innerlocker = locker;
        int number = Convert.ToInt32(o);
        while (true)
        {
            locker.EnterWriteLock();
            Console.WriteLine("Writing  " + number);
            Thread.Sleep(50);
            locker.ExitWriteLock();
        }
    };
    for (int i = 1; i <= 100; i++)
    {
        Thread thread = new Thread(reader);
        thread.Start(i);
    }
    for (int i = 11; i <= 15; i++)
    {
        Thread thread = new Thread(writer);
        thread.Start(i);
    }

    AutoResetEvent waitForever = new AutoResetEvent(false);
    waitForever.WaitOne();

}


本文转自BloodyAngel博客园博客,原文链接:http://www.cnblogs.com/zgynhqf/archive/2009/12/15/1624940.html,如需转载请自行联系原作者

相关文章
|
11天前
|
Java 程序员 开发者
深入理解Java并发编程:线程同步与锁机制
【4月更文挑战第30天】 在多线程的世界中,确保数据的一致性和线程间的有效通信是至关重要的。本文将深入探讨Java并发编程中的核心概念——线程同步与锁机制。我们将从基本的synchronized关键字开始,逐步过渡到更复杂的ReentrantLock类,并探讨它们如何帮助我们在多线程环境中保持数据完整性和避免常见的并发问题。文章还将通过示例代码,展示这些同步工具在实际开发中的应用,帮助读者构建对Java并发编程深层次的理解。
|
11天前
|
Linux API C++
c++多线程——互斥锁
c++多线程——互斥锁
|
1天前
|
安全 Java
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
【JAVA进阶篇教学】第十篇:Java中线程安全、锁讲解
|
2天前
|
安全 Java 程序员
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
【Java多线程】面试常考——锁策略、synchronized的锁升级优化过程以及CAS(Compare and swap)
6 0
|
2天前
|
Java
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
【Java多线程】分析线程加锁导致的死锁问题以及解决方案
11 1
|
4天前
|
算法 安全 Linux
【探索Linux】P.20(多线程 | 线程互斥 | 互斥锁 | 死锁 | 资源饥饿)
【探索Linux】P.20(多线程 | 线程互斥 | 互斥锁 | 死锁 | 资源饥饿)
11 0
|
12天前
|
消息中间件 安全 算法
通透!从头到脚讲明白线程锁
线程锁在分布式应用中是重中之重,当谈论线程锁时,通常指的是在多线程编程中使用的同步机制,它可以确保在同一时刻只有一个线程能够访问共享资源,从而避免竞争条件和数据不一致性问题。
|
13天前
|
Java
【专栏】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性,锁是什么意思,有哪些分类?
【4月更文挑战第28天】Java多线程中,锁用于控制共享资源访问,确保数据一致性和正确性。本文探讨锁的概念、作用及分类:乐观锁与悲观锁、自旋锁与适应性自旋锁、公平锁与非公平锁、可重入锁和读写锁。使用锁需注意避免死锁、合理选择锁粒度及性能优化。理解锁有助于提升多线程编程的效率和稳定性。
|
17天前
|
Java 调度
Java中的并发编程:从线程到锁的探索
在Java的并发编程中,线程与锁是构建高效、稳定多线程应用程序的关键要素。本文将带你走进Java并发编程的世界,从线程的基础知识讲起,逐步深入到锁的实现与应用,旨在让读者对Java并发编程有更深入的理解,并能在实际开发中灵活运用。
|
22天前
|
算法 Java 编译器
【JavaEE多线程】掌握锁策略与预防死锁
【JavaEE多线程】掌握锁策略与预防死锁
23 2