iOS中的多线程技之Pthread和NSThread

来源:互联网 发布:两进一出网络切换器 编辑:程序博客网 时间:2024/05/18 00:36

什么是进程?

进程是指系统中正在运行的一个应用程序?

什么是线程?

线程是指程序的一段执行序列(代码逻辑),进程的一部分。

iOS中主线程和子线程的责任分工:

主线程:显示/刷新UI界面;处理UI事件(点击事件;滚动事件;拖拽事件等)。占用内存1M;

子线程:执行一些耗时的操作,比如:下载操作。占用内存512K。

iOS中创建线程有四种方式:

1:pThread:基于C语言

pthread_t pthread;//创建pthread对象,启动一个子线程

intthreadError = pthread_create(&pthread,NULL, task, data);

参数说明:

参数1:pthread对象;参数2:线程属性,填写NULL为默认;参数3:子线程任务的名字void *(*)(void *);参数4:传递给参数3的唯一参数;


2:NSThread:基于OC语言

方法1:使用NSThread对象:由于NSThread创建的线程,创建和启动是分离的,所以一般用于自动的来指定启动时机的情况,使用频率相对较高。

第一步:创建NSThread对象

NSThread *thread = [NSThread alloc] initWithTarget:<#(id)#> selector:<#(SEL)#> object:<#(id)#>;

参数说明:

        参数一:指定线程对象

参数二:指定线程任务

参数三:参数二的唯一参数,如果没有,则填写nil

第二步:手动启动线程

[thread start]; //NSThread创建的线程需要手动进行启动

NSThread常用属性说明:

thread.name =@"第二线程";//自定义线程名字,默认为nil

 [thread setThreadPriority:0.5];//设置线程属性(优先级),优先级(0 ~ 1)值越大,优先级越高

[NSThread sleepForTimeInterval:4];//线程延时操作

NSThread *thread = [NSThread currentThread];//获取当前线程

NSThread *thread = [NSThread mainThread];//获取主线程

[NSThread exit];//手动的退出正在执行的线程

- (BOOL)isMainThread; + (BOOL)isMainThread; //当前线程是否主线程

- (BOOL)isExecuting; //线程是否正在运行

- (BOOL)isFinished; //线程是否已结束


方法2:使用NSThread类方法detach来创建子线程,并执行子线程任务

[NSThread detachNewThreadSelector:@selector(downloadImage) toTarget:self withObject:nil];(参考上面参数说明)



0 0
原创粉丝点击