【发布时间】:2018-01-29 15:49:48
【问题描述】:
根据我的阅读,信号量旨在允许多个线程同时访问资源池。我还在阅读互斥锁一次只允许单个线程访问资源。我目前正在使用一些使用SemaphoreSlim 的代码来确保只有一个线程可以访问资源。
创建一个只有单个线程可以同时访问资源池的信号量有意义吗?在这种情况下,为什么不使用Mutex?或者(根据我正在阅读的内容)C# 中的类似构造 - lock 或 Monitor?听起来互斥锁/锁/监视器更简单,而且潜在的误导性更小。
【问题讨论】:
-
SemaphoreSlim比Mutex、rtfm 快得多。 -
大多数时候你会想使用
Monitor,但它有一个我现在不记得的限制,在另一个线程中离开。SemaphoreSlim没有。 -
@Sinatr 不是
Monitor只是lock? -
@FCin,
lockis implemented 使用Monitor。 -
@Sinatr 这就是我要说的。
lock是Monitor的语法糖。
标签: c# multithreading semaphore