哈,终于有时间来整理一下这个多线程问题了,好了费话不多说,进入正题。
我的拙见进程线程线程串行并发并行异步iOS的多线程应用有四种代码写的方式Pthread 这个方式我就没用过好吧NSthread 这才是苹果封装的这个我也很少用GCD这个好用我自己常用- 创建队列- 创建任务- 队列组
进程(PRogress)就是一个已运行程序的实体,也是多个线程的一个容器。程序本身只是指令得集合,而进程才是程序(那些指令)的真正运行。每个进程都是独立的,都会在其专有的且受保护得内存空间中。
现今分时系统得基本运行单位。
线程(thread)它被包含在进程之中,一条线程就是进程中一个单一顺序的控制流,一个进程中并发多个线程,每条线程并行执行不同的任务 线程是进程得基本执行单元,一个进程得所有任务都在线程中执行。
1个线程中任务的执行是串行的 如果在一个线程中执行多个任务,那么只能一个一个地顺序执行这些任务 同一时间一个线程只能执行一个任务
一个cpu强行要处理多个线程,在宏观上造成一种假象,假装一起执行,其实是交替执行吧
多个核一起走,真正的一起来处理
异步是最终目的,多线程只是实现异步的一种手段。等待某事件的过程中继续做自己的事,不需要等待这一事件完成后再工作。和同步相对。
好吧以上就是我理解的,还有些不足,还请吊大的指出来
就是一套多系统通用的多线程API,移植性很强。在iOS可以用但是是基于c语言的,这酸爽。
可以完全面向对象,所有我们直接操控线程对象。
这个就是直观,而且好用,代码简洁。是苹果为多核的并行运算提出的解决方案,所以会自动合理地利用更多的CPU内核,它会自动管理线程的生命周期,我们只需要告诉干什么就行了,也是用c语言,结合了block(swift李叫做闭包),大家都喜欢用这个呢 具体介绍的话看这个 http://www.jianshu.com/p/d56064507fb8
好的创建完队列之后,就创建任务吧
现在的3.0将代码的语法风格都进行了较大的改革,和之前的不太一样,我先把理论弄下来,然后再实现吧 详细戳这 http://www.jianshu.com/p/8442576377a8 这里详细的解释了异步,同步,串行,并行都是在Swift 3.0下实现的
队列组使我们能够然所有的任务都执行完之后,再来执行语句。
let group = dispatch_group_create()let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0)dispatch_group_async(group,queue){()-> Void in for _ in 0..<3{ println(NSThread.currentThread()) }}dispatch_group_async(group,disptach_get_main_queue()){()-> Void in for _ in 0..<8{ println(NSThread.currentThread()) }}dispatch_group_async(group,queue){()-> Void in for _ in 0..<5{ println(NSThread.currentThread()) }}//总得 (3.0之前的代码,预计不能运行了吧)dispatch_group_notify(group,dispatch_get_main_queue()){()->Void in println("完成/(NSThread.currentThread())")}主要是这个大神写的http://www.jianshu.com/p/0b0d9b1f1f19
新闻热点
疑难解答