UIKit classes should be used only from an application’s main thread. (From iOS4, drawing to a graphics context is thread-safe.) You can't use UIKit stuff in a background thread.
Thus, you can only use dispatch_async(dispatch_get_main_queue(), block) in this situation.
dispatch_async(dispatch_get_main_queue(), ^(void) {
It will invoke the block on the main thread in the runloop of the main thread.
dispatch_async(dispatch_queue_create("myGCDqueue", NULL), ^(void) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
It will invoke the block in a background thread. You can't use it because you want to use UIKit in the block. And be careful dispatch_async(dispatch_queue_create(, it might cause memory leak, you have to release the serial queue that is created by dispatch_queue_create.
dispatch_sync(dispatch_queue_create("myGCDqueue", NULL), ^(void) {
dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) {
dispatch_sync waits until the block is done.
dispatch_sync(dispatch_get_main_queue(), ^(void) {
It causes DEADLOCK.
//************************************************************************************
1 dispatch_async will not block and dispatch_sync will block
2 dispatch_get_main_queue(),will dispatch the task to main thread, so be careful not to cuase deadlock
3 example to call sth in multithread and update UI
- (void)handleClickEvent {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
[self backgroundProcessing];
dispatch_async(dispatch_get_main_queue(), ^{
[self updateUI];
});
});
}
分享到:
相关推荐
operating system multithread
在IT领域,多线程(MultiThread7)是一种编程技术,允许程序同时执行多个独立的任务,从而提升系统效率和响应性。特别是在Windows平台下,使用Visual C++(VC)进行开发时,多线程功能尤为关键,因为它可以充分利用...
本项目"multithread_network.zip"聚焦于利用Qt框架实现多线程网络服务器,旨在提供一个学习和复习的平台。Qt是一个强大的跨平台应用程序开发框架,特别适合于GUI编程。在Qt5.12版本中,它提供了对多线程和网络编程的...
一个android平台上的 扩展任务库,在AsyncTask基础上进行扩展。 用法 1....public class DownloadFilesTask extends AsyncTask { public DownloadFilesTask(TaskListener listener) { //explicit inherit the ...
《多线程编程C语言指南》是一本深入探讨C语言中多线程编程的经典著作,旨在帮助程序员理解和掌握如何在C环境中实现并发处理。多线程编程是现代计算机科学中的重要概念,它允许程序同时执行多个任务,提高系统资源...
在计算机科学中,多线程(MultiThread)是一种编程技术,允许一个应用程序同时执行多个不同的任务或子任务。这种技术可以极大地提高程序的并发性和效率,特别是在多核处理器系统中,每个核心可以独立地执行一个线程...
《有效多线程编程:利用RTOS概念支持高级多线程架构》 在现代计算领域,多线程编程已经成为提升性能、优化资源利用的关键技术之一。本文将深入探讨多线程编程的概念、优势以及其实现方法,特别关注Java语言环境下多...
《win32multithread》深入探讨了在Windows操作系统环境下如何使用多线程技术来提升程序的执行效率和并发性能。多线程是现代计算机编程中的一个重要概念,它允许一个应用程序同时执行多个独立的代码段,即线程,从而...
标题《POSIX Multithread Programming Primer.pdf》和描述表明,本文档是一份由Bil Devis编写的基于POSIX标准的多线程编程教程手册。POSIX是指可移植操作系统接口(Portable Operating System Interface),是由IEEE...
multithread.js, 在浏览器多线程中轻松实现 多线程在浏览器多线程中轻松实现。在不中断用户体验的情况下运行任何业务逻辑。多线程是一个简单的包装器,它消除了处理网络工作者和可以传递对象的麻烦。在不中断用户...
### 精通C++多线程编程 在软件开发领域,特别是在高性能计算、游戏开发以及其他需要高效资源管理的应用场景中,多线程技术已成为必不可少的一部分。本文将深入探讨如何利用C++进行高效的多线程编程,帮助读者理解并...
【VC++ MultiThread】是一个关于使用Microsoft Visual C++进行多线程编程的示例。多线程技术在现代计算机编程中扮演着至关重要的角色,尤其是在性能密集型和并发任务处理的应用场景下。通过创建和管理多个执行线程,...
MultiThread support for SQLite access
multithread part11 book
multithread part10 book
multithread part09 book
multithread part15 book
multithread part021 book
multithread part16 book