多线程

基本概念

 程序:有源代码生成的可执行应用。

  进程:一个正在运行的程序可以看做是一个进程。进程拥有独立运行所需的全部资源。

   线程:程序中独立运行的代码段。

   *一个进程是由一个或多个线程组成。进程只负责资源的调度与分配,线程才是程序真正的执行单元,负责代码执行。

  单线程特点

每个正在运行的程序(即进程),至少包含一个线程,这个线程叫做主线程。

主线程在程序启动时被创建,用于执行main函数。

只有一个线程的程序称为单线程程序。

主线程负责执行程序所有代码,这些代码只能顺序执行不能并发执行。

   多线程

拥有多个线程的程序,称作多线程程序。

iOS允许用户自己自己开辟新的线程,相对于主线程来讲,这些线程称作子线程。

可以根据需要开辟若干子线程。

子线程和主线程都是独立的运行单元,各自的执行互不影响,因此能够并发执行。


  单、多线程的区别

单线程程序:只有一个进程,代码顺序执行,容易出现代码阻塞。

多线程程序:有多个线程,线程之间独立运行,能够有效地避免代码阻塞,并提高代码的运行性能。

iOS中UI的添加和刷新都是在主线程中操作。


代码专区

  //NSTread

//1.获取当前线程

          NSTread *currentThread = [NSThread currentThread];

//2.获取主线程

  NSThread *mainThread = [NSThread mainThread];

//3.[NSThread detachNewThreadSelector:SEL toTarget:(id) withObject:nil];

//NSObject

//1.自带的多线程实现

//2.[self performSelectorInBackground:@selector(dead) withObject:nil];

//NSOperation

//1.NSOperation *per = [[NSOperation alloc] init]; 

开始执行直接调用 [per start]; 换行释放[per release];

//2.两个子类 NSInvocationOperation ,NSBlockOperation

//NSOperationQueue

//1.可设置最大并发数 setMaxConcurrentOperationConunt;

//2.给队列里添加任务 addOperation   addOperationWithBlock:^{};

   //GCD

//创建一个同步线程队列(队列名)

dispatch_queue_t queue = dispath_queue_create("first",DISPATCH_QUEUE_SERIAL)

//异步执行同步线程队列

dispatch_async(queue,^{多线程代码});

//返回主线程

dispath_async(dispatch_get_main_queue(),^{代码(在主线程中运行)});

//并行队列(默认global_queue)

dispath_async(dispath_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{同步下载,在主线程运行})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值