草庐IT

Semaphore

全部标签

ios - Swift:从 url 下载数据导致 semaphore_wait_trap 卡住

在我的应用程序中,点击按钮从Internet站点下载数据。该站点是包含二进制数据的链接列表。有时,第一个链接可能不包含正确的数据。在这种情况下,应用程序获取数组中的下一个链接并从那里获取数据。链接是正确的。我遇到的问题是,当我点击按钮时,应用程序经常(尽管并非总是)卡住几秒钟。5-30秒后,解冻并正常下载工具。我明白,有什么东西阻塞了主线程。在xCode中停止进程时,我得到了这个(注意到semaphore_wait_trap):我是这样做的://ButtonAction@IBActionfuncdownloadWindNoaa(_sender:UIButton){//Startsact

ios - Semaphore.wait(timeout : . now()) 的目的是什么?

查看一些Apple代码示例,我发现了这一点:funcmetadataOutput(_output:AVCaptureMetadataOutput,didOutputmetadataObjects:[AVMetadataObject],fromconnection:AVCaptureConnection){//wait()isusedtodropnewnotificationsifoldonesarestillprocessing,toavoidqueueingupabunchofstaledata.ifmetadataObjectsOverlayLayersDrawingSemapho

objective-c - 使用 Swift 访问类单例时的 semaphore_wait_trap

我遇到了一个奇怪的问题。我可以很好地访问我的类单例实例,但如果我再次尝试访问它,它就会挂起。这是代码的简单版本:privatelet_SharedInstance=MyManager()classMyManager:NSObject{classvarsharedInstance:MyManager{return_SharedInstance}overrideinit(){super.init()println("init")println(self.accessToken())println(MyManager)println("test1")println(MyManager.sha

java - 使用 Semaphore 和 acquire(int) 的 Java 代码中的死锁

我有以下Java代码:importjava.util.concurrent.*;classFoo{staticSemaphores=newSemaphore(1);publicvoidfun(finalcharc,finalintr){newThread(newRunnable(){publicvoidrun(){try{s.acquire(r);System.out.println(c+"_"+r);s.release(r+1);}catch(Exceptione){e.printStackTrace();}}}).start();}}classths{publicstaticvoi

主线程上的 IOS semaphore_wait_trap 导致 UI 挂起

我在异步(串行)工作队列中有一个长时间运行的函数。我知道有时这个函数会卡在特定的openCV调用中。由于某种原因,此挂起也导致主线程挂起。暂停并进入Debug模式时,我看到调用了semaphore_wait_trap()在主线程(队列)上我可以在Debug模式下挂起挂起的线程(我的工作队列),然后这个陷阱就会消失,GUI在手机上再次变得有响应。取消暂停工作线程后,GUI会响应1-2秒(我怀疑直到再次激活该线程),然后UI再次变得无响应。此线程不对主线程/队列进行dispatch_sync()调用IOS是否有可能因为worker长时间运行而暂停主线程(“捕获”它)?我可以强制它移除blo

amazon-web-services - 如何让Redisson Semaphore自动释放

我正在使用RSemaphore来维护特定的计数。请看下面:-RSemaphoresem=redisson.getSemaphore("custid=10");sem.trySetPermits(10);try{sem.acquire();}catch(InterruptedExceptione){e.printStackTrace();}System.out.println(Thread.currentThread().getName()+":Acquiredpermit");try{Thread.sleep(60000);}catch(InterruptedExceptione){/

ios - 什么时候使用 Semaphore 而不是 Dispatch Group?

我假设我知道如何使用DispatchGroup,为了理解这个问题,我试过:classViewController:UIViewController{overridefuncviewDidLoad(){super.viewDidLoad()performUsingGroup()}funcperformUsingGroup(){letdq1=DispatchQueue.global(qos:.userInitiated)letdq2=DispatchQueue.global(qos:.userInitiated)letgroup=DispatchGroup()group.enter()dq

c# - USB 连接 "The semaphore timeout period has expired"错误

我收到这个错误...Thesemaphoretimeoutperiodhasexpired.在这条线上...ThePorts.ActivePort1.Open();...但我只是偶尔得到它。当它发生时,它会一遍又一遍地发生。然后问题消失了,持续数小时或数天,然后它又回来了。串口是一个连接了蓝牙的USB。我认为这个人遇到了非常相似的问题,但不是在C#中FreezeonSerialPort.Open/DeviceIoControl/GetcommStatewithusbser.sys据我所知,我已经阅读了他的整个问题,以及由此产生的评论和答案,但我真的无法弄清楚哪一个解决了他的问题,或者C

windows - "ConnectEx tcp: The semaphore timeout period has expired."是什么意思

我写了一个简单的go程序,它在windows上运行并测试远程端口是否处于事件状态:packagemainimport("fmt""net")funcmain(){conn,err:=net.Dial("tcp","192.168.23.191:3403")iferr!=nil{fmt.Println(err)}else{conn.Close()}}现在,远程端口已关闭。第一次运行,报错:dialtcp192.168.23.191:3403:ConnectExtcp:Theremotecomputerrefusedthenetworkconnection.然后我继续运行,报错改为:dia

ios - dispatch_semaphore_dispose 上的 EXC_BAD_INSTRUCTION(代码=EXC_I386_INVOP,子代码=0x0)

我在dispatch_semaphore_dispose上收到EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP,subcode=0x0)但我真的不知道如何追查其根本原因。我的代码使用了dispatch_async、dispatch_group_enter等等。更新:崩溃的原因是由于webserviceCall(见下面的代码)从不调用onCompletion并且当代码再次运行时,我收到错误EXC_BAD_INSTRUCTION。我证实确实如此,但不知道为什么或如何防止这种情况。代码:dispatch_queue_tqueue=dispatch_get_glo