信息
您所需的主题如下所示。但此主题未包含在此库中。

Semaphore 构造函数 (Int32, Int32)

2013/12/13

初始化 Semaphore 类的新实例,并指定最大并发入口数,还可以选择保留某些入口。

Namespace:  System.Threading
程序集:  System(位于 System.dll 中)

public Semaphore(
	int initialCount,
	int maximumCount
)

参数

initialCount
类型: System.Int32
可以同时授予的信号量的初始请求数。
maximumCount
类型: System.Int32
可以同时授予的信号量的最大请求数。

异常条件
ArgumentException

initialCount 大于 maximumCount

ArgumentOutOfRangeException

maximumCount 小于 1。

- 或 -

initialCount 小于 0。

此构造函数初始化未命名的信号量。所有使用这类信号量的实例的线程都必须具有对该实例的引用。

如果 initialCount 小于 maximumCount,则效果与当前线程调用了 WaitOnemaximumCount 减去 initialCount)次相同。如果不想为创建信号量的线程保留任何入口,请对 maximumCountinitialCount 使用相同的数值。

下面的代码示例创建一个最大计数为 3、初始计数为 0 的信号量。此示例启动五个线程,这些线程都将阻止等待该信号量。主线程使用 Release(Int32) 方法重载,以便将信号量计数增加为其最大值,从而允许三个线程进入该信号量。每个线程都使用 Thread.Sleep 方法等待一秒钟以便模拟工作,然后调用 Release() 方法重载以释放信号量。每次释放信号量时,都显示前一个信号量计数。控制台消息对信号量的使用进行跟踪。每个线程的模拟工作间隔都稍有增加,以使输出更为易读。

Windows Phone OS

受以下版本支持: 8.0

显示: