https://community.oracle.com/blogs/kgh/2004/10/19/multithreaded-toolkits-failed-dream
大概就意思就是。。如果是多线程渲染。虽然速度很快,但是问题会出现很多
那么多线程可以做什么?
网络请求 ,io,计算,数据模型转换等等
如图,上面是理想多线程与下面是现实多线程
多线程
Thread 最原始,裸露
Cocoa Operation(Operation 和OperationQueue) 封装最好
Grand Central Dispath(GCD) 中间 封装没那么好。但是效率最高。
Thread 在三种多线程技术是最轻量级的,但是需要自己管理线程的声明周期和线程同步。线程同步对数据的加锁会有一定的系统开销
快捷方式创建
datachNewThread(_ block:@escaping()->Void)
datachNewThreadSelector(_ selector:Selector,toTarget target:Any,with argument:Any?)
import UIKit
import PlaygroundSupport
//不希望主线程执行完毕就结束
PlaygroundPage.current.needsIndefiniteExecution = true
for i in 0...10{
Thread.detachNewThread {
print(i)
}
}
结果
0
1
6
8
4
9
3
10
7
2
5
//: FROM https://www.anuomob.com
import UIKit
import PlaygroundSupport
//不希望主线程执行完毕就结束
PlaygroundPage.current.needsIndefiniteExecution = true
class ObjectForThread{
func threadTest(){
let thread = Thread(target: self, selector: #selector(threadWorker), object: nil)
thread.start()
print("threadTest")
}
@objc func threadWorker(){
print("threadWorker")
}
}
let obj = ObjectForThread()
obj.threadTest()
结果
threadTest
threadWorker