→ uranusjr:不過你的理解沒錯 09/29 23:47
→ angelyin:如果1和2的理解是對的~關於第3點又想不通... 09/29 23:53
→ angelyin:不知道有什麼情況是一定要呼叫main thread中途做別的事? 09/29 23:53
推 zonble:像是 UI 就需要在 main thread 控制 09/30 02:44
推 Blueshiva:所以在更新UI,例如進度列的時候就會用到? 09/30 02:55
→ zonble:比方說,你一邊用迴圈跑東西,一邊要有動畫效果的進度條 09/30 03:03
→ zonble:這樣就需要兩個 thread,要不程式卡在迴圈裡頭 09/30 03:04
→ zonble:像是什麼風火輪轉轉轉的效果就不會動 09/30 03:04
→ zonble:但是當你的迴圈跑到了一定的狀況,要把結果丟回給 UI 09/30 03:05
→ zonble:比方說要把轉轉轉停掉,而那個動畫是在 thread 裡頭 09/30 03:06
→ zonble:就需要叫 main thread 把轉轉轉停掉。 09/30 03:07
→ zonble:如果不想開 thread 還要有同樣的效果,就變成迴圈原本做 09/30 03:08
→ zonble:的事情,改用 run loop 來推動 09/30 03:08
→ zonble:每一輪 run loop 跑一點要做的事情 09/30 03:09
→ zonble:另外想到,如果 thread 做的事情最後會呼叫timer 09/30 03:15
→ zonble:也是丟回 main thread 做比較好。 09/30 03:15
→ zonble:而在 10.5 之前,像是在 thread 裡頭呼叫 DO 09/30 03:16
→ zonble:是會爆炸的…。 09/30 03:16