06-執行緒

葉喬木發表於2018-12-14

執行緒

程式碼在iPhone 上的執行,原始碼通過編譯器轉換為CPU的命令列。

如下的一個方法就是:

程式啟動之後,將程式中的CPU命令列配置到CPU記憶體中去,CPU從應用中指定的地址開始,一個個的執行CPU的指令命令列。

在OC 中的流控制語句,if else 等,執行命令列的地址會遠離當前的位置,位置遷移。

一個CPU 一次只能執行一個命令,不能執行到某處進行分開為兩個並列的命令。

執行緒:一個CPU 執行的CPU命令列為一條無分叉的路徑,即為執行緒

最新的Iphone 一個CPU 晶片,有6個CPU。

->  0x109d2a4e4 <+1189>: testl  %eax, %eax
    0x109d2a4e6 <+1191>: je     0x109d2a82c               ; <+2029>
    0x109d2a4ec <+1197>: cmpl   $0x70000, %eax            ; imm = 0x70000 
    0x109d2a4f1 <+1202>: jb     0x109d2a7d1               ; <+1938>
    0x109d2a4f7 <+1208>: movq   0x125c98a(%rip), %r14     ; "searchDisplayController"
    0x109d2a4fe <+1215>: movq   %r13, %rdi
    0x109d2a501 <+1218>: movq   %r14, %rsi
    0x109d2a504 <+1221>: callq  *0xeb1fa6(%rip)           ; (void *)0x0000000106a95d80: objc_msgSend
    0x109d2a50a <+1227>: movq   %rax, %rdi
    0x109d2a50d <+1230>: callq  0x10a8ccb2e               ;

相關文章