我设置了2个UIWebViews,第一个控制第二个。他们通过Ajax请求进行通信。是否可以“暂停”一个线程并让其他操作先行?
我想在第二个WebView中加载一个网站,然后继续执行其他任务。不幸的是,这是崩溃。它正在崩溃,因为Web Thread在获得响应后正在被第一个权利占用。第二个没有时间加载网页并导致死锁。
我想延迟响应,直到第二个WebView完全加载网页。目前,第二个WebView在第一个WebView获取和响应之后开始加载(即Web线程被释放时)。
在第二个WebView加载完成之前,有可能“暂停”/“暂停”当前(第一个WebView)执行吗?这意味着也开始执行第二个WebView。
事件:
- 第一的WebView发送命令(使用同步AJAX命令)
- 网络线程阻塞通过第一的WebView的任务加载网页
- 响应的命令,并计算执行
- 返回响应
- 第二个WebView 开始加载网页
- 死锁
我希望事件5在事件4之前。这可能吗?
解决方案: 正如你在我通过使解决我的问题的意见看,然后工作同时。基本上我不得不使用Grand Central Dispatch(GCD)。另一种选择是使用NSOperationQueues来实现它,它使您可以更好地控制执行流程,但实施起来往往更加复杂。
有用文学:
- Apple: Concurrency Programming Guide
- Multithreading and Grand Central Dispatch on iOS for Beginners Tutorial
- How To Use NSOperations and NSOperationQueues
感谢您的回答,我解决了我的僵局。 =) – Senad
太棒了!我很高兴它为你工作:) – JonahGabriel