企业应用架构系列二十六:SemaphoreSlim与Semaphore有何区别?
- 内容介绍
- 文章标签
- 相关推荐
本文共计611个文字,预计阅读时间需要3分钟。
在进行多线程程序的开发和设计过程中,不可避免地需要引入semaphore信号量这个组件。这是.NET框架提供的一个用于多线程间资源互斥的工具,允许指定数量的线程访问特定的资源。简单来说,就是允许多个线程在特定时刻安全地访问共享资源。
在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个“红绿灯”,只有获取了semaphore的信号后,才能进入特定的资源。那么从netcore 后,又引入了semaphoreslim这个工具类,它与semaphore 有什么区别呢?网上搜搜后,发现它们两个区别大概是一个是通过windows 内核kernal提供的,一个是.net运行时提供的。网上信息不是都是准确的,最好还是去官网确认一下。
经过官网确认的确是semaphoreSlim 是一个轻量级的信号量,不依赖于windows kernel semaphore。经过分析,明白,netcore 是一个跨平台的开发框架,进行多线程开发的时候,我们也要考虑平台的依赖,否则就有可能会陷入一个技术坑。
明白了semaphore 与semaphoreSlim的区别,再做一个小Demo进行测试练习一下。
本文共计611个文字,预计阅读时间需要3分钟。
在进行多线程程序的开发和设计过程中,不可避免地需要引入semaphore信号量这个组件。这是.NET框架提供的一个用于多线程间资源互斥的工具,允许指定数量的线程访问特定的资源。简单来说,就是允许多个线程在特定时刻安全地访问共享资源。
在进行多线程程序的开发和设计的过程中,不可避免的需要引入semaphore信号量这个组件,这是.net框架提供的一个对多线程计数互斥的方案,就是允许指定的线程个数访问特定的资源而增加的 一个“红绿灯”,只有获取了semaphore的信号后,才能进入特定的资源。那么从netcore 后,又引入了semaphoreslim这个工具类,它与semaphore 有什么区别呢?网上搜搜后,发现它们两个区别大概是一个是通过windows 内核kernal提供的,一个是.net运行时提供的。网上信息不是都是准确的,最好还是去官网确认一下。
经过官网确认的确是semaphoreSlim 是一个轻量级的信号量,不依赖于windows kernel semaphore。经过分析,明白,netcore 是一个跨平台的开发框架,进行多线程开发的时候,我们也要考虑平台的依赖,否则就有可能会陷入一个技术坑。
明白了semaphore 与semaphoreSlim的区别,再做一个小Demo进行测试练习一下。

