草庐IT

dispatch_semaphore_wait

全部标签

ios - dispatch_get_global_queue 和 dispatch_queue_create 有什么区别?

我正在编写一个中等复杂的iOS程序,它需要有多个线程来执行一些较长的操作(解析、连接到网络等)。但是,我对dispatch_get_global_queue和dispatch_queue_create之间的区别感到困惑。我应该使用哪一个,您能否简单解释一下它们之间的区别?谢谢。 最佳答案 作为documentation描述,全局队列适用于并发任务(即,您将异步调度各种任务,如果它们同时运行,您将非常高兴)并且如果您不想遇到创建和销毁自己的理论开销队列。如果您需要一个串行队列(即您需要一次执行一个已调度的block),创建您自己的队列

objective-c - 主队列上的 dispatch_sync 与 dispatch_async

请耐心等待,这需要一些解释。我有一个类似于下面的函数。上下文:“aProject”是一个名为LPProject的核心数据实体,带有一个名为“memberFiles”的数组,其中包含另一个名为LPFile的核心数据实体的实例。每个LPFile代表磁盘上的一个文件,我们要做的是打开每个文件并解析其文本,寻找指向其他文件的@import语句。如果我们找到@import语句,我们希望找到它们指向的文件,然后通过添加与代表第一个文件的核心数据实体的关系来将该文件“链接”到该文件。由于所有这些都可能在大文件上花费一些时间,因此我们将使用GCD在主线程之外完成。-(void)establishImp

objective-c - performSelectorOnMainThread : and dispatch_async() on main queue? 有什么区别

我在修改线程内的View时遇到问题。我尝试添加一个subview,但显示需要大约6秒或更长时间。我终于让它工作了,但我不知Prop体如何。所以我想知道它为什么起作用以及以下方法之间有什么区别:这有效-立即添加了View:dispatch_async(dispatch_get_main_queue(),^{//someUImethodsej[viewaddSubview:otherView];}这需要大约6秒或更长时间才能显示:[viewControllerperformSelectorOnMainThread:@selector(methodThatAddsSubview:)withO

objective-c - 为什么我们不能在当前队列上使用 dispatch_sync?

我遇到了一个场景,我有一个委托(delegate)回调,它可能发生在主线程或另一个线程上,直到运行时我才知道是哪个(使用StoreKit.framework)。我还有需要在回调中更新的UI代码,这需要在函数执行之前发生,所以我最初的想法是有一个这样的函数:-(void)someDelegateCallback:(id)sender{dispatch_sync(dispatch_get_main_queue(),^{//uiupdatecodehere});//codeherethatdependsupontheUIgettingupdated}当它在后台线程上执行时,效果很好。但是,当

iphone - "wait_fences: failed to receive reply: 10004003"?

由于以下代码行,我第一次(也是第一次)加载我的View时遇到了这个神秘的错误:-(void)viewWillAppear:(BOOL)animated{[textFieldbecomeFirstResponder];}有一个明显的延迟(大约3到4秒,即使在模拟器上也是如此),这让我的应用感觉没有响应。有谁知道如何解决这一问题?我在Apple的网站上找不到任何文档,在此处或在Google上找不到任何解决方案。奇怪的是,如果我将行放入-viewDidAppear:而不是-viewWillAppear:;则会发生相反的情况也就是说,不是只在第一次显示键盘时打印错误,以后再也不打印错误,而是第

java - 使用 Thread.sleep(x) 或 wait() 时出现异常

我试图延迟或进入休眠状态我的Java程序,但出现错误。我无法使用Thread.sleep(x)或wait()。出现同样的错误信息:unreportedexceptionjava.lang.InterruptedException;mustbecaughtordeclaredtobethrown.在使用Thread.sleep()或wait()方法之前是否需要执行任何步骤? 最佳答案 你有很多阅读要做。从编译器错误到异常处理、线程和线程中断。但这会做你想做的事:try{Thread.sleep(1000);//1000millisec

ruby - Process::detach 和 Process::wait 是否互斥(Ruby)?

我正在重构我的RubyonRails服务器(在Linux上运行)中的一些并发处理以使用Spawn。Spawn::fork_it文档声称fork进程在分离后仍然可以等待:https://github.com/tra/spawn/blob/master/lib/spawn.rb(第186行):#detachfromchildprocess(parentmaystillwaitfordetachedprocessiftheywish)Process.detach(child)但是,RubyProcess::detach文档说你不应该这样做:http://www.ruby-doc.org/co

ruby-on-rails - `dispatch_request' : 在 Net::SFTP.upload 期间没有这样的请求

我正在使用Net::SFTP将文件上传到服务器。这是代码:uri=URI.parse('sftp://host.org')io=StringIO.new(csv_string)timeout120doNet::SFTP.start(uri.host,ENV['SFTP_USER'],:password=>ENV['SFTP_PASS'],:port=>22)do|sftp|sftp.upload(io,"/ftpguest/Medstro/"+file_name)endend当我运行代码时,它成功连接到主机并上传了一个具有正确文件名的零字节文件。然后它抛出这个异常:lib/ruby/g

ruby - Watir 消息 : Instead of passing arguments into #wait_until_present method, 使用关键字

我在填写表格后使用watir和firefox抓取网页。这是我的代码的一小部分:browser.button(:type=>'submit').clicksleep10browser.element(:id=>'footer').wait_until_present(timeout=30)html=browser.html出现此消息:Insteadofpassingargumentsinto#wait_until_presentmethod,useKeywords这是什么意思?我该如何解决这个问题?感谢您的帮助。 最佳答案 答案在新的

ruby - 如何使用 em_mysql2 解决 'connection is still waiting for a result' 错误

我在Goliath(eventmachine)下使用activerecord和em_mysql2。最奇怪的事情发生在我的用户模型上。当我第一次对/users进行POST时,一切正常,就像预期的那样。当我执行第二个POST时出现错误。Mysql2::Error:Thisconnectionisstillwaitingforaresult,tryagainonceyouhavetheresult:INSERTINTO`users`(...andsoon...)我的任何其他模型或路线都不会发生这种情况。我会假设如果数据库连接处于困惑状态,我会在其他请求上看到相同的错误,但不会-所有其他数据库