Concurrency 计数初始化为n的信号量
如果一个计数信号量被初始化为n,这是否意味着n个进程可以同时运行其关键部分?本质上是的 请记住,计数信号量只有在递减后计数为负数时才会阻塞。因此,信号量可以在阻塞之前减少n次。由于所有减量必须与增量匹配,因此,假设每个进程只减量一次信号量(这是目前最常见的情况),那么是的,n个进程将能够同时运行其关键部分。否 如果n>0,则意味着在请求上下文阻塞之前,计数信号可以被精确地提取n次,并等待计数信号变为可用(假设在此期间没有人给出)Concurrency 计数初始化为n的信号量,concurrency,synchronization,operating-system,semaphore,locks,Concurrency,Synchronization,Operating System,Semaphore,Locks,如果一个计数信号量被初始化为n,这是否意味着n个进程可以同时运行其关键部分?本质上是的 请记住,计数信号量只有在递减后计数为负数时才会阻塞。因此,信号量可以在阻塞之前减少n次。由于所有减量必须与增量匹配,因此,假设每个进程只减量一次信号量(这是目前最常见的情况),那么是的,n个进程将能够同时运行其关键部分。否 如果n>0,则意味着在请求上下文阻塞之前,计数信号可以被精确地提取n次,并等待计数信号变为可用(假设在此期间没有人给出) 如果nYes,如果您已经将信号量初始化为n,那么sem\u wai
如果nYes,如果您已经将信号量初始化为n,那么sem\u wait将不会阻塞任何线程,除非它已经被调用n次,那么只有信号量变为-ve,并且这就是调用sem\u wait的任何线程阻塞的时候
对于关键部分,您必须使用二进制信号量或互斥量。这不是违背了信号量的目的吗?互斥?还是计数信号量总是被初始化为1?信号量的目的是允许n次采集,因此根据定义,不,它不会违背目的。如果您想要一个互斥信号量,那么它会定义一个信号量(1)
或计数信号量总是应该初始化为1吗?
仅当需要互斥时