NSThread 的用法

一、线程的注意点:

1.不要同时开太多的线程(最多不要超过5条,其中包括主线程)

2.线程概念

2.1.主线程:UI 线程,显示、刷新 UI 界面,处理 UI 控件的事件

2.2.子线程:后台线程,异步线程

3.不要把耗时的操作放在主线程,要放在子线程中执行

二、NSThread 用法

1.创建和启动线程的3种方式

1.1.先创建,后启动

// 创建

NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(download:) object:nil];

// 启动

[thread start];

1.2.创建完自动启动

[NSThread detachNewThreadSelector:@selector(download:) toTarget:self withObject:nil];

1.3.隐式创建(自动启动)

[self performSelectorInBackground:@selector(download:) withObject:nil];

2.常见方法

2.1.获得当前线程

+ (NSThread *)currentThread;

2.2.获得主线程

+ (NSThread *)mainThread;

2.3.睡眠(暂停)线程

+ (void)sleepUntilDate:(NSDate *)date;

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;

2.4.设置线程的名字

- (void)setName:(NSString *)name;

- (NSString *)name;

三、线程同步

1.实质:为了防止多个线程抢夺同一个资源造成的数据安全问题

2.实现:给代码加一个互斥锁(同步锁)

@synchronized(self){

// 被锁住的代码

}

时间: 2024-10-05 16:33:30

NSThread 的用法的相关文章

iOS开发-多线程NSOperation和NSOperationQueue

上一篇文章稍微提及了一下NSThread的使用,NSThread能直观地控制线程对象,不过需要自己管理线程的生命周期,线程同步,用起来比较繁琐,而且比较容易出错.不过Apple给出了自己的解决方案NSOperation,它本身是抽象基类,因此必须使用它的子类,使用NSOperation子类的方式有NSInvocationOperation和NSBlockOperation两种方式,先补充一下NSThread的用法: NSThread获取当前线程: [NSThread currentThread]

多线程:GCD

多线程是程序开发中非常基础的一个概念,大家在开发过程中应该或多或少用过相关的东西.同时这恰恰又是一个比较棘手的概念,一切跟多线程挂钩的东西都会变得复杂.如果使用过程中对多线程不够熟悉,很可能会埋下一些难以预料的坑. iOS中的多线程技术主要有NSThread, GCD和NSOperation.他们的封装层次依次递增,其中: NSThread封装性最差,最偏向于底层,主要基于thread使用 GCD是基于C的API,直接使用比较方便,主要基于task使用 NSOperation是基于GCD封装的N

iOS多线程与网络开发之多线程NSThread

郝萌主倾心贡献,尊重作者的劳动成果,请勿转载. 假设文章对您有所帮助,欢迎给作者捐赠,支持郝萌主,捐赠数额任意,重在心意^_^ 我要捐赠: 点击捐赠 Cocos2d-X源代码下载:点我传送 游戏官方下载:http://dwz.cn/RwTjl 游戏视频预览:http://dwz.cn/RzHHd 游戏开发博客:http://dwz.cn/RzJzI 游戏源代码传送:http://dwz.cn/Nret1 A.NSThread的基本使用 1.创建和启动线程 一个NSThread对象就代表一条线程

GCD和NSOperation 的概念,用法及之间的区别

CGD与NSOperation的区别 gcd是基于c的底层api,NSOperation属于object-c类.相对于gcd:1,NSOperation拥有更多的函数可用,具体查看api.2,在NSOperationQueue中,可以建立各个NSOperation之间的依赖关系.3,有kvo,可以监测operation是否正在执行(isExecuted).是否结束(isFinished),是否取消(isCanceld).4,NSOperationQueue可以方便的管理并发.NSOperatio

多线程 pthread + NSThread

多线程 pthread + NSThread pthread (C语言) · 规律: C语言中的数据类型一般都是以 _t或者Ref结尾 创建C语言的对象, 一般都用cretae#import <pthread/pthread.h>- (IBAction)btnOnClick:(id)sender { // 1.创建子线程/* 第1个参数:线程代号 (现场对象) 第2个参数:线程的属性 第3个参数:子线程需要执行的操作(调用的方法) void *(*)(void *) 返回值 (*指针名称)参数

NSThread&amp;线程间通信

创建和启动线程 一个NSThread对象就代表一条线程 创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil]; [thread start]; // 线程一启动,就会在线程thread中执行self的run方法 主线程相关用法 + (NSThread *)mainThread; // 获得主线程 - (BOOL)isMainThread; // 是否

iOS多线程开发之GCD 用法入门

我们知道,在iOS中进行多线程编程,主要有三种方式:[NSThread].[NSOperation]和[GCD].其中又以[GCD]为苹果官方最为推荐.本文将利用一个简单的demo,简述GCD的用法入门,以及本人对GCD的一点肤浅理解和学习心得. 先把参考文章列出: http://www.cnblogs.com/kenshincui/p/3983982.html http://www.cnblogs.com/sunfrog/p/3305614.html http://mobile.51cto.c

iOS-多线程--(pthread/NSThread/GCD/NSOperation)--总结

零.线程的注意点(掌握)1.不要同时开太多的线程(1~3条线程即可,不要超过5条)2.线程概念1> 主线程 : UI线程,显示.刷新UI界面,处理UI控件的事件2> 子线程 : 后台线程,异步线程3.不要把耗时的操作放在主线程,要放在子线程中执行 一.NSThread(掌握)1.创建和启动线程的3种方式1> 先创建,后启动// 创建NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(dow

网络多线程(pthread , NSThread,GCD ,NSOperation)

在这里给大家介绍一些多线程的知识,以及应用,希望能给一些需要的朋友学习学习,如果有错误的地方,请帮忙指出,非常感谢. 那么先介绍多线程前,先说一下什么是线程,什么是进程? 进程:{ 1.正在运行的一个应用程序就叫进程. 2.每个进程之间都是相互独立的,每个进程都运行在自己独立的专用的且受保护的内存空间内. } 线程:{  1.线程是进程的基本执行单元. 2.每一个进程都默认开启一条线程,我们称之为主线程.(一个进程至少有一条线程) } 多线程:多线程就是一个进程可以开辟多线线程(子线程),同时执