我有一个需要处理的作业队列,队列定期被计时器踢,但也会在新作业添加到队列时调用线程。
当队列被踢时我想在另一个线程上启动队列处理,因为我不想阻止调用线程(在很多情况下会是UI线程)。
为此,我在高优先级并发队列上运行一个大型中央调度操作,这将创建一个我的http类的实例并通过它提交作业(作业本质上是一个http请求)。
http类在内部使用NSURLConnection执行请求异步。
我的问题是GCD操作完成(因为它已经提交了所有异步http请求),所以我猜它运行的线程要么被清理并重新使用,要么退出。这正在消除我正在执行这些异步Web请求的http类。
我的问题是,如何让我的http类挂起并完成处理请求而不让GCD操作等待它们?
干杯
答案 0 :(得分:0)
asynch http的主要目的不是阻塞主线程,因为你通过操作队列使用后台线程我会说它已经被处理了。因此,如果定义的处理结束,您可以将数据恢复到什么状态。
我会说同步http会更清晰,更容易支持。您可以使用具有同步方法的NSURLConnection:
[NSURLConnection sendSynchronousRequest:returningResponse:error:]
我还发现了一个提供同步操作模式的库,并承诺使cocoa(包括cocoa touch)网络编程变得更加容易:ASIHttpRequest