iOS—多线程

2016-03-02  本文已影响0人  HI宏宇

线程是用来执行任务的,线程彻底执行完任务A才能去执行任务B。为了同时执行两个任务,产生了多线程。 线程执行完毕就被销毁

1、进程就是在操作系统中运行的程序,专业点说,进程是应用程序的执行实例

2、进程不能执行任务

3、进程在运行时创建的资源随着进程的终止而死亡

线程执行完毕就会被销毁。

子线程:由主线程来创建,用来帮助主线程执行程序的后台处理任务。如果子线程A中又创建一个子线程B,在创建之后,这两者就是相互独立的,多个子线程之间效果上可以同时执行。

一个进程中可以有多个线程,并且所有线程都在该进程的虚拟地址空间中,可以使用进程的全局变量和系统资源。

多线程(NSThread)

初始化有俩种方式

NSThread *thread=[[NSThread alloc]initWithTarget:self selector:@selector(子线程调用的方法) object:@"可以传进子线程方法的参数id类型"]; 

[NSThread detachNewThreadSelector:@selector(thraed:) toTarget:self withObject:@"thread"];第二种初始化

注释:第一种初始化方式需要手动开启任务 第二种不需要

[thraed start];

子线程调用的其他经常常用的方法或属性:

[NSThread currentThread]可以得到当前的线程

eg;"{number = 22, name = main}", number系统分配的数字 name是线程的名字 其中主线程number是1 name=main 

BOOL isMainThread 判断是否为主线程

BOOL executing 判断是否正在执行

BOOL finished 判断是否完成

BOOL cancelled判断是否取消

- (void)cancel  取消

- (void)start 开始

- (void)main  设main线程

[NSThread exit];//退出当前线程 (线程先取消状态下才能推出)

+ (BOOL)setThreadPriority:(double)p;设置优先级

+ (void)sleepForTimeInterval:(NSTimeInterval)ti;设置线程休眠时间

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(nullable id)arg waitUntilDone:(BOOL)wait;//子线程执行完毕跳的主线程 切换线程

上一篇下一篇

猜你喜欢

热点阅读