草庐IT

semaphore

全部标签

ruby - 如何限制同一 Ruby 脚本的并发实例?

在Ruby1.9.x中,不允许我的Ruby脚本再次运行或等待前一个实例完成的简单方法是什么?**我希望避免困惑的文件锁定或进程表检查。有没有类似globalmutex的东西或信号量已经在核心?我研究了原生Mutex但这似乎只适用于一个Ruby进程内的线程,而不适用于不同进程。**稍后我可能会添加超时功能,或者限制为N个实例,或者希望使用多个全局锁(每个系统范围的资源一个,最多只能有一个实例)。 最佳答案 这段非常短的代码将卡住在原地,直到/tmp中以您的脚本命名的锁定文件被独占锁定:File.open("/tmp/#{File.ba

ruby 信号量?

我正致力于在Ruby中实现“FairBarbershop”问题。这是一份类作业,但我不是要找任何讲义。我一直在疯狂地搜索,但我似乎无法找到一个信号量的Ruby实现来镜像在C中找到的信号量。我知道有Mutex,这很棒。单一实现,正是那种信号量应该做的。然后是条件变量。我认为这会很好地解决问题,但是看看这些,每个等待调用都需要一个Mutex,在我看来我无法将数值放入信号量(例如,我有七个理发店,3理发师等)。我想我需要一个计数信号量,但我认为Ruby没有(据我所知)在其核心中包含这样一个类,这有点奇怪。谁能帮我指出正确的方向? 最佳答案

javascript - JavaScript 或 jQuery 中的临界区

我有一个网页,其中某个Ajax事件是异步触发的。这个Ajax部分可以被调用一次或多次。我无法控制此事件被触发的次数,也无法控制时间。此外,该Ajax部分中的特定代码应作为关键部分运行,这意味着,当它运行时,该代码的其他副本不应运行。伪代码如下:运行JavaScript或jQuery代码进入Ajax临界区(当某个进程正在等待响应回调时,不要再次进入该段,直到该进程完成)运行更多JavaScript或jQuery代码我的问题是,如何按照上述方式运行第2步?如何使用JavaScript或jQuery创建/保证互斥部分。我了解理论(信号量、锁等),但我无法使用JavaScript或jQuery

go - 如何等到缓冲 channel (信号量)为空?

我有一片整数,它们是并发操作的:ints:=[]int{1,2,3,4,5,6,7,8,9,10}我使用缓冲channel作为信号量,以便获得并发运行的go例程的上限:sem:=make(chanstruct{},2)for_,i:=rangeints{//acquiresemaphoresem上面的代码在达到最后一个或最后两个整数之前运行良好,因为程序在最后一个go例程完成之前结束。问题:如何等待缓冲channel耗尽? 最佳答案 您不能以这种方式使用信号量(在本例中为channel)。当您处理值和分派(dispatch)更多go

java - JVM 在尝试获取信号量时卡住

我有一个使用嵌入式Jetty(版本9.3.6.v20151106)和JDK8u65的应用程序。当我在Mac或Linux上使用这个应用程序时,我没有任何困难。但是,在Windows上,Jetty不会启动并且应用程序会永久挂起。我在进程上运行了一个jstack命令并隔离了阻止服务器启动的线程。java.lang.Thread.State:WAITING(parking)atsun.misc.Unsafe.park(NativeMethod)-parkingtowaitfor(ajava.util.concurrent.Semaphore$NonfairSync)atjava.util.co

windows - 超时为 0 的 KeWaitForSingleObject 和 KeReadStateSemaphore 之间的区别

超时设置为0的KeWaitForSingleObject和KeReadStateSemaphore有区别吗? 最佳答案 区别很大。KeReadStateSemaphore只是返回信号量的状态,而超时为0的KeWaitForSingleObject实际上会处理副作用,如果等待得到满足(即副作用是递减信号状态)。使用前者进行轮询,使用后者无需等待即可尝试获取信号量。 关于windows-超时为0的KeWaitForSingleObject和KeReadStateSemaphore之间的区别,

c - Windows 互斥对象和信号量

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。ImprovethisquestionWindows互斥对象是否可以替换为二进制信号量,或者Windows互斥对象是否具有我错过的某些特定功能?

windows - 避免在 Windows 批处理文件中同时调用

我有一个通用的Windows构建批处理(即build.bat),它以不同的参数并行运行。startbuild.batdevice1startbuild.batdevice2startbuild.batdevice3但是在那批中有一个可执行文件在并行调用时崩溃。是否有可能,使用Windows内置函数,当它已经在另一个批处理中运行时阻止这个调用,并在它在另一个批处理中完成时继续?假设该批处理的内容是startdelay5当批处理被多次调用时,当另一个延迟当前正在运行时,延迟不得运行。这类似于信号量。所以我们的目标是拥有这样的东西CheckAndWaitIfDelayIsRunningsta

c - 当进程被终止时,有没有办法让线程从无限信号量等待中出来?

操作系统:Windows。语言:C我有一个线程通过TCP向服务器发送请求并在信号量上无限等待响应。还有另一个线程读取套接字,将接收到的数据复制到一个公共(public)缓冲区中,并使信号量发出脉冲以结束等待。这一切都很好。但在进程由于某种原因被终止的情况下,等待信号量的线程会一直等待,而其他线程将终止。为什么当进程被杀死时线程等待信号量没有结束?我在Linux论坛上读到有SEM_UNDO可以帮助解决这种情况。Windows上有类似的东西吗?任何解决方法? 最佳答案 Semaphoresdonothaveowners.如果您等待信号量

c++ - 带有信号量的线程安全单例问题

我写了一个简单的单例应用程序。下面是我的示例主类//ThreadsafeSingletonUsingSemaphore.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include#include#include"MySingleton.h"usingnamespacestd;inti=0;#defineTHREADCOUNT100DWORDWINAPIThreadProc(LPVOIDlParam);HANDLEg_semaphore=NULL;int_tmain(intargc,_TCHA