`
wyf
  • 浏览: 437916 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
社区版块
存档分类
最新评论

Interlocked说明及使用

    博客分类:
  • C#
阅读更多

 Interlocked 为多个线程共享的变量提供原子操作。

主要方法:

            //替换usingResource为1,返回原始值
            Interlocked.Exchange(ref usingResource, 1);
            //usingResource增加4
            Interlocked.Add(ref usingResource, 4);
            //比较替换。如果值usingResource为4 则替换为10
            Interlocked.CompareExchange(ref usingResource, 10, 4);
            //usingResource--
            Interlocked.Decrement(ref usingResource);
            //usingResource++
            Interlocked.Increment(ref usingResource);

 Interlocked.Exchange可实现并行不阻塞锁的功能,

//一种否认重入的简单方法。多线程争用时只有一个线程执行进来。
        static bool UseResource()
        {
            //返回0则进入方法执行
            if (0 == Interlocked.Exchange(ref usingResource, 1))
            {
                Console.WriteLine("{0} acquired the lock", Thread.CurrentThread.Name);

                //访问非线程安全资源的代码将在这里。

                //模拟一些工作
                //Thread.Sleep(500);

                Console.WriteLine("{0} exiting lock", Thread.CurrentThread.Name);

                //释放锁,重新设置为0
                Interlocked.Exchange(ref usingResource, 0);
                return true;
            }
            else
            {
                Console.WriteLine("   {0} was denied the lock", Thread.CurrentThread.Name);
                return false;
            }
        }

 

 

分享到:
评论

相关推荐

    .NET中保证线程安全的高级方法Interlocked类使用介绍

    为了提高并发性能并避免潜在的数据竞争问题,开发人员可以使用高级方法,如Interlocked类。Interlocked类提供了在多个线程共享变量时执行原子操作的能力,从而避免了传统锁机制可能导致的性能瓶颈和死锁风险。 ...

    c#多线程编程笔记5(完结).pdf

    在文件【部分内容】中,我们看到了两种多线程编程的使用场景:Interlocked类的使用和ReaderWriterLock的使用。 1. Interlocked类的使用: 文件中首先给出了一个关于Interlocked类的示例代码。Interlocked类在多...

    Windows下实现的读写锁(VS2008环境)

    本主题将详细探讨在Windows下,特别是在Visual Studio 2008开发环境下,如何利用Interlocked系列函数实现轻量级的读写锁。 读写锁的核心思想是允许多个读取线程同时访问共享资源,但只允许一个写入线程进行修改。...

    MIPS芯片架构说明.pdf

    MIPS(Microprocessor without Interlocked Pipeline Stages,即“无内部互锁流水级微处理器”)是美国MIPS技术公司设计的一种处理器架构,广泛应用于各种计算设备中,包括嵌入式系统、路由器、工作站和个人电脑等。...

    mips-linux-gnu 4.8.4

    “使用说明.txt”可能是提供给用户如何安装、配置和使用这个工具链的文档,包括如何解压文件、设置环境变量、编译测试程序等步骤。遵循这个文档可以帮助用户顺利地在他们的Ubuntu 9.10环境中建立一个MIPS开发环境。 ...

    MIPS cache指令说明

    Cache指令的操作取决于`op`字段的值,而有效地址的使用则依据操作的类型及Cache的类型: - **虚地址**:有效地址用于Cache寻址,可能触发TLB(Translation Lookaside Buffer)重填或无效异常。 - **实地址**:MMU...

    MIPS处理器设计说明.pdf

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛应用于教育、嵌入式系统和数据中心。本设计报告详细介绍了如何基于Verilog HDL设计一个兼容MIPS指令格式的单...

    专题资料(2021-2022年)MIPS处理器设计说明剖析.doc

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,以其高效的32位定长指令格式而闻名。本实践课程的目标是通过设计一个简单的MIPS处理器,让学生深入理解其内部结构...

    MIPS 24K的一些说明书

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛用于嵌入式系统和网络设备。MIPS 24K是MIPS架构的一个变种,专为高性能和低功耗设计。本文将深入讨论MIPS 24K...

    组成原理课程实验:MIPS 流水线CPU、实现36条指令、转发、冒险检测-内含源码和说明书.zip

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,以其高效的流水线设计闻名。在这个实验中,我们将深入理解流水线的基本原理,并实践如何设计一个支持36条指令的...

    MIPS处理器设计说明.docx

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,以其高效的指令执行和简洁的硬件设计而闻名。本实践课程的目标是通过设计一个简单的MIPS处理器,让学生深入理解其...

    pjsip 移植

    1. **mips架构**:MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算架构,广泛应用于嵌入式系统和网络设备中。移植pjsip到mips平台意味着需要针对该架构调整代码,使其能够正确运行...

    MIPS芯片架构说明[收集].pdf

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,由MIPS Technologies公司设计。MIPS32是MIPS架构的一个版本,专为32位计算环境设计,广泛应用于嵌入式系统、网络...

    快速秒杀windows多线程

    总结来说,这篇文章通过一个简单的登录计数例子,说明了在多线程编程中如何遇到和解决数据竞争问题,并介绍了Windows平台上多线程编程的一些基础知识点和工具的使用方法。通过学习这些知识点,可以更好地理解多线程...

    gxemul-0.6.0.1.tar.gz

    3. **文档**:可能包括README文件,详细说明了如何安装、配置和使用gxemul,以及任何特定版本的更新日志。 4. **库和依赖**:gxemul可能需要一些外部库才能运行,这些库可能会在压缩包中提供或者列出需要用户自行...

    c# 线程(thread)同步处理

    为了保证数据的一致性,可以使用`.NET`框架提供的`System.Threading.Interlocked`类来进行原子操作。例如,可以通过`Interlocked.Increment`或`Interlocked.Decrement`方法来安全地增加或减少共享变量的值。 **优点...

    .net版本简单线程调用源码.rar

    这通常通过锁定、使用线程安全的数据结构(如`Concurrent`系列类)或使用`Interlocked`类来实现。 10. **线程间通信**:`Monitor.Wait`和`Monitor.Pulse`用于等待和唤醒线程,`ManualResetEvent`和`AutoResetEvent`...

    mips中文学习手册

    "Readme-说明.htm"和"资料说明.txt"可能包含学习资源的介绍、使用指南和额外的练习题,帮助你巩固所学知识。 学习 MIPS 不仅有助于理解计算机体系结构的基础,也为深入学习操作系统、嵌入式系统开发、编译原理等...

    multi-CPU.rar_MIPS_multi cpu

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛应用于嵌入式系统、路由器和其他设备。在多CPU环境下,系统可以同时处理多个任务,提高整体性能。 描述中...

    mips.rar 简单的mips处理器集合

    MIPS(Microprocessor without Interlocked Pipeline Stages)是一种精简指令集计算机(RISC)架构,广泛用于教学、研究和工业应用中。这个名为“mips.rar”的压缩包似乎包含了与MIPS处理器设计相关的资源,特别是...

Global site tag (gtag.js) - Google Analytics