sem_init(&resource_sem, 0, 1); sem_init(&read_sem, 0, 2);
时间: 2024-06-01 07:07:32 浏览: 53
一款阅读源码
这段代码使用了 POSIX 信号量库中的 `sem_init` 函数来初始化两个信号量 `resource_sem` 和 `read_sem`。这两个信号量都是二元信号量,因为第二个参数都是 0 或 1。其中,`resource_sem` 的初始值为 1,表示有一个资源可以被占用。`read_sem` 的初始值为 2,表示最多可以同时有两个线程读取资源。
信号量是一种进程间或线程间的同步原语,用来控制多个并发执行的程序对共享资源的访问。在 POSIX 信号量库中,信号量的类型有三种:二元信号量(binary semaphore)、计数信号量(counting semaphore)和命名信号量(named semaphore)。其中,二元信号量只能取值 0 或 1,用于互斥访问共享资源;计数信号量可以取任意非负整数,用于控制多个线程对共享资源的访问数量;命名信号量可以跨越进程间通信,允许不同进程之间对共享资源的访问进行同步和互斥。
阅读全文