semaphore相关内容

如何使用信号量实现条件变量?

前一段时间,我在考虑如何彼此实现各种同步原语.例如,在pthread中,您可以获得互斥体和条件变量,并从中可以构建信号量. 在Windows API(或至少是Windows API的较旧版本)中,有互斥体和信号量,但没有条件变量.我认为应该可以从互斥量和信号量中构建条件变量,但是对于我的一生,我只是想不到这样做的方法. 有人知道这样做的好构造吗? 解决方案 这是 ..
发布时间:2020-05-14 02:17:08 其他开发

在C ++/Linux中,系统范围内的全局变量/信号量/互斥量?

是否可以在Linux上的C ++中创建系统范围的全局变量/信号灯/互斥锁? 这是原因:我有一个系统,该系统通常在不相关的数据上运行同一软件的多个副本.通常有4个作业,每个作业运行相同的软件.该软件有一小部分,在其中创建了一个占用大量内存的巨大图形.在该部分之外,内存使用量适中. 有时会发生2个作业同时到达相同的内存占用区域,并且整个系统开始交换的情况.因此,我们想通过在不同作业之间创建 ..
发布时间:2020-05-14 02:15:36 服务器开发

信号量的实际用途是什么?

非二进制的.. 我从未遇到过需要使用信号量而不是互斥量的问题. 那么,这主要是理论上的构造,还是像Office这样的真正的Firefox,它们有使用它们的地方吗? 如果是这样,信号量的常见用法有哪些? 解决方案 我认为您已经知道信号量是什么,而您只是想知道它如何在“真实软件"上使用. “像Office一样的Firefox,Firefox有使用它们的地方吗?" 是的,“真实软件 ..
发布时间:2020-05-14 02:15:20 其他开发

Ruby Semaphores?

我正在研究Ruby中"Fair Barbershop"问题的实现.这是用于课堂作业,但我不需要任何讲义.我一直在疯狂搜索,但似乎找不到找到与C语言中的信号相似的Ruby实现的信号量. 我知道这里有Mutex,那太好了.单一实现,完全可以实现这种信号量. 然后是条件变量.我以为这样做会很好,但是看着这些,每次等待呼叫都需要使用互斥对象,在我看来,我无法将数字值添加到信号量中(例如,我有7 ..
发布时间:2020-05-14 02:14:52 其他开发

信号量的共识数字是多少?

(我认为)共识编号互斥锁为2. 信号量的共识数字是多少(例如pthread_sem_ *中的数字)? 条件变量的共识数字是多少(例如pthread_cond _ *)? 解决方案 互斥量的共识数将为1.很明显,互斥量对于单个线程是免费的.从其定义来看,很明显互斥体不再等待两个线程.因此,共识数为> = 1和 ..

互斥和信号量

我正在编写一个模拟男女通用浴室的程序(用于家庭作业).一次只能容纳4人,并且如果其他性别已经在使用洗手间,则男人和女人无法进入.我的问题是最多允许4个人进入洗手间.从输出中可以看到,一次只有1个人进入洗手间.这是我的代码: const int Delayx = 60; int i; int restroom = 0; int Menwaiting = 0; int Womenwaiting ..
发布时间:2020-05-14 02:13:09 C/C++开发

二进制信号量和互斥量之间的区别

二进制信号量和互斥量之间是否有区别,或者它们本质上是相同的? 解决方案 它们不是同一件事.它们用于不同的目的! 虽然两种类型的信号量都具有完整/空状态并使用相同的API,但它们的用法却大不相同. 互斥信号量 互斥信号量用于保护共享资源(数据结构,文件等). 互斥量信号量由接收它的任务“拥有".如果任务B尝试给任务A当前持有的互斥锁赋值,则任务B的调用将返回错误并失败. ..

在生产者使用者示例中第二个线程未启动

我正在尝试通过在Java中使用semaphores来实现生产者和消费者问题.问题是,当我启动两个线程(生产者和消费者)时,消费者不会启动,而生产者在缓冲区已满后会自行阻塞.我的意思是看起来只有一个线程以同步方式工作.因此,正如我提到的,我使用3个信号量,它们是空的,完整的和互斥的.这是最简单的代码; 生产者类别; import java.util.concurrent.Semaphor ..
发布时间:2020-05-14 01:55:33 Java开发

使用POSIX信号量的可重用屏障实现

需要一个创建5个pthread的解决方案.每个pthread执行一个函数,该函数涉及循环遍历10次.在循环的每次迭代中,线程都会将int从0递增到0.9 * MAX_INT,然后打印迭代次数.确保5个线程中的每一个都完成循环的第i次迭代,然后才能开始第(i + 1)次迭代(即,所有线程在每次迭代结束时都进行同步/集合).我需要使用通过POSIX信号量实现的两相屏障来强制执行同步约束 我写了以 ..
发布时间:2020-05-14 01:52:41 其他开发

在wait()/signal()块中获取互斥锁会怎样?

因此,练习的描述是: 您在这家餐厅里有N分,您可以在那里索要一份炸薯条.每个点有M个部分.这里有1个frycheff.当订购点有2份时,它会警告厨师需要重新装填. Cheff按FIFO的顺序交付这些部分. 我们做了这个伪代码: init { Semafoor[] mutex; Condition[] cond_point = new Condition[N]; ..

等到上一个流程实例完成

我是Linux C编程世界的新手,请耐心等待.找到了一些有关使用互斥量和信号量但与我的情况不完全匹配的进程间同步(同一进程但实例不同)的线程.我尝试关注它们并尝试创建一些示例,但是没有一个对我有用. 最后在此处发布以获取帮助. 我正在努力创建一个将通过以太网telnet会话执行的实用程序.如下面USAGE注释中所述,第一次调用将传递命令行参数-init,它将启动始终运行的线程.在-in ..
发布时间:2020-05-14 01:48:37 其他开发

使用信号量控制线程数

如何使用Semaphore类来控制可以访问对象的线程数? 解决方案 使用允许的最大启动次数初始化信号灯, 如果线程进入限制区域,则将信号量计数器减一. 如果信号灯离开限制区域,则将信号量计数器增加一. ..
发布时间:2020-05-14 01:35:27 Java开发

是"benaphores"值得在现代OS上实施?

回到我作为BeOS程序员的那一天,我读了我认为这很聪明,而且似乎可以在支持原子增量/减量的任何平台上做同样的事情. 另一方面,这看起来很容易包含在标准互斥量实现本身中……在这种情况下,在我的程序中实现此逻辑将是多余的,不会带来任何好处. 有人知道现代的锁定API(例如pthread_mutex_lock()/pthread_mutex_unlock())是否在内部使用此技巧吗?如果没有 ..
发布时间:2020-05-14 01:24:30 其他开发

使用易失性变量和信号量-Java

我从线程,信号量,易失性变量等开始. 我想知道是否在使用信号量时是否有必要将变量定义为volatile,我的意思是: 例如,具有2个线程,一个增加,另一个减少变量,显然,在每次访问之前,我都有一个互斥量,该互斥量可以随时控制只有一个线程在使用该变量. 是否有必要将其定义为易失性? 解决方案 来自 内存一致性影响:在调用a之前在线程中执行的操作 “释放"方法,例如release ..
发布时间:2020-05-14 01:19:23 Java开发

通过计数测试信号量

有有关OS X上的信号量的文章.作者通过在两个线程中递增和递减静态变量来测试信号量.在信号量保护变量访问的情况下,变量最终为零.如果没有后卫,变量最终将具有虚假值.我尝试了代码,它可以工作.我不了解的是,来自两个线程的并发访问如何使最终变量值有所不同.毕竟,在我看来,一堆+1和–1应该是可交换的,对吗?我觉得我缺少明显的东西,那是什么? :) 解决方案 问题是++/--不是原子的.它们本质 ..
发布时间:2020-05-14 01:14:41 其他开发

使用信号量保护队列的问题

我正在使用以下代码来限制资源的使用. 一段时间(成功运行3-4天后),我得到队列为空的异常,或者发现返回的对象为空. 我想知道是否仅限制5个线程进入此Get方法,这是怎么发生的. 在Final块中肯定也调用了GetConnection的地方,即ReleaseConnection. 每次通话,我都没有登录.队列中的资源数量.队列数量似乎从未超过5. Semaphore ..
发布时间:2020-05-14 01:13:39 C#/.NET

使用信号量的单车道桥同步

我正在尝试实现单车道桥同步问题. 一次,汽车只能朝一个方向行驶,桥的最大载重为5.我在下面提出了一些建议. int curr_direction = -1; //curr_direction values can be -1,1 and 2.-1 means bridge is empty int cars_count = 0; HANDLE sem_bridgempty;//To kee ..
发布时间:2020-05-14 01:06:56 C/C++开发

可以使用C ++ 11 condition_variables来同步进程吗?

我正在尝试了解C ++ 11的std::condition_variable.我已经阅读了 cppreference.com 和 C ++ 0x没有信号灯?如何同步线程?. 我的问题(我认为尚未为三篇提到的文章回答)是:是否可以将std::mutex和std::condition_variable组合创建的“信号量"(请参阅​​C++0x没有信号灯?如何同步线程?)用于进程之间的同步方式可以 ..
发布时间:2020-05-14 00:47:15 C/C++开发