多线程编程是防止主线程堵塞,增加运行效率等等的最佳方法。而原始的多线程方法存在很多的毛病,包括线程锁死等。在Cocoa中,Apple提供了 NSOperation这个类,提供了一个优秀的多线程编程方法。
本次介绍NSOperation的子集,简易方法的NSInvocationOperation:
@implementation MyCustomClass
- (void)launchTaskWithData:(id)data
{
//创建一个NSInvocationOperation对象,并初始化到方法
//在这里,selector参数后的值是你想在另外一个线程中运行的方法(函数,Method)
//在这里,object后的值是想传递给前面方法的数据
NSInvocationOperation* theOp = [[NSInvocationOperation alloc] initWithTarget:self
selector:@selector(myTaskMethod:) object:data];
// 下面将我们建立的操作“Operation”加入到本地程序的共享队列中(加入后方法就会立刻被执行)
// 更多的时候是由我们自己建立“操作”队列
[[MyAppDelegate sharedOperationQueue] addOperation:theOp];
}
// 这个是真正运行在另外一个线程的“方法”
- (void)myTaskMethod:(id)data
{
// Perform the task.
}
@end
一个NSOperationQueue 操作队列,就相当于一个线程管理器,而非一个线程。因为你可以设置这个线程管理器内可以并行运行的的线程数量等等。下面是建立并初始化一个操作队列:
@interface MyViewController : UIViewController {
NSOperationQueue *operationQueue;
//在头文件中声明该队列
}
@end
@implementation MyViewController
- (id)init
{
self = [super init];
if (self) {
operationQueue = [[NSOperationQueue alloc] init]; //初始化操作队列
[operationQueue setMaxConcurrentOperationCount:1];
//在这里限定了该队列只同时运行一个线程
//这个队列已经可以使用了
}
return self;
}
- (void)dealloc
{
[operationQueue release];
//正如Alan经常说的,我们是程序的好公民,需要释放内存!
[super dealloc];
}
@end
简单介绍之后,其实可以发现这种方法是非常简单的。很多的时候我们使用多线程仅仅是为了防止主线程堵塞,而 NSInvocationOperation就是最简单的多线程编程,在iPhone编程中是经常被用到的。
转载,原文地址http://hi.baidu.com/hh20040410/blog/item/db043782034f01b36c81199b.html
分享到:
相关推荐
Python 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程.docxPython 多线程教程....
《Delphi多线程教程》是一本专注于讲解如何在Delphi环境下进行多线程编程的专业教程。多线程技术在现代软件开发中扮演着至关重要的角色,它允许应用程序同时执行多个任务,提升效率,优化用户体验。Delphi作为一款...
本教程将深入浅出地介绍多线程的概念、原理及其在实际开发中的应用。 一、多线程基础 1. 线程与进程:线程是操作系统分配处理器时间的基本单位,而进程则是一个独立的资源拥有者,包含一组线程。相比进程,线程间...
### Delphi多线程编程详解 #### 一、Delphi中的多线程概念与实现 在Delphi中,多线程编程是一项非常重要的技术,它能够显著提高应用程序的响应速度和处理能力。对于大多数Delphi书籍来说,通常只会简单介绍`...
VS2013 创建多线程教程 多线程编程是指在一个进程中同时运行多个线程,以提高程序的执行效率和响应速度。在 VS2013 平台中,创建多线程可以使用 CreateThread 函数或 AfxBeginThread 函数。 1. 创建线程结构体 ...
Java多线程教程详解 Java多线程是Java编程中不可或缺的一部分,它允许程序同时执行多个任务,提高程序效率和响应速度。理解并熟练运用Java的多线程机制是成为一个专业Java开发人员的关键技能。 一、线程的概念与...
本教程将深入探讨C#中的多线程概念,并通过实例帮助你理解和掌握这一关键技术。 首先,我们需要了解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程中可以有多个线程同时执行。在C#中,创建和管理线程...
linux多线程教程.zip
Thread概念 Thread实现方法 Thread生命周期 Thread的安全和锁 Concurrent包(安全集合类、安全Queue) 线程阻塞机制 线程池详解(原理,实际使用) 线程的监控,分析方法 扩展数据库连接池
标题所指的知识点是“多线程编程的入门教程”,这意味着本文档是为那些刚接触多线程编程的初学者提供的基础教学材料。通过这个标题,我们可以推断文档内容会从最基础的多线程概念讲起,逐渐过渡到实际编程技巧和例子...
本教程将深入讲解Java线程的相关知识,包括进程与线程的基本概念、线程的创建和启动、多线程的互斥与同步、线程状态和线程控制以及死锁的概念。 首先,我们要理解进程与线程的区别。进程是操作系统资源分配的基本...
在编程领域,多线程是一种常见的技术,它允许程序同时执行多个不同的任务,极大地提高了程序的效率和响应性。本文将深入探讨多线程的概念、重要性以及如何在实际项目中应用多线程,特别关注Java语言中的多线程实现。...
在.NET框架中,C#语言提供了强大的多线程支持,使得开发者可以充分利用现代多核处理器的优势,实现并行处理和高效能编程。本资源包含六个C#.NET多线程的实例,涵盖了多线程的基本使用到更高级的概念,如线程互斥。...
在现代软件开发中,多线程已经成为一种必要的并发处理机制,能够提高程序的效率和响应性。Perl同样支持多线程编程,这使得它在处理大规模数据处理、网络爬虫和实时系统等任务时更具优势。下面我们将深入探讨Perl的多...
### C#多线程系列教程知识点概述 #### 一、多线程基础概念 - **线程与进程**:在计算机科学中,进程是程序的一次执行过程,而线程则是进程中可独立调度和执行的基本单位。每个进程至少包含一个线程。 - **线程的...
个人工作和学习中积累和总结的多线程笔记 包含异步 线程等待 线程异常 线程终止 线程安全 lock monitor mutex autoresetevent semephore readerwriterlock readerwriterlockslim
易语言调用大漠插件之多线程高级教程(第六套) 第一章 1.中控台组件的简单应用讲解 2.易大漠多线程高级之半自动玩家版中控台界面说明 3.易大漠多线程高级之中控台菜单应用 4.易大漠多线程高级之中控台刷新窗口...
本教程将深入探讨iOS中的多线程概念及其应用,以实现更高效的下载速度和快速的页面加载。 首先,我们需要理解什么是多线程。在计算机科学中,线程是程序执行的基本单元,一个进程中可以包含多个线程。多线程意味着...