作者RogerShih
1. 你說對一半, Multi-Thread 程式應該這麼看, 當有多 CPU 的時候, 例如兩顆, 那就平均分配, 那個有空就那個去執行, CPU 越多, thread 排隊的時間越短.
而只有單一 CPU 時, 那就照排, 所以排列時間比較長.
2. 事實上, 多工應該說是分時、平行運算混合, 拿現在的 Windows XP 為例, 你一進入程式可能已經執行了幾十個 Process, 這些 Process 可能是單一 thread, 或是 multi-threads, 但, 平常會有幾十顆同樣數量的 CPU 同時平行運算嗎?所以其中分時多工也必定存在. 每一秒可能切割成許許多多單位, 優先權高的多分配一點, 可能是 5/1000 秒, 優先權低的可能是 1/1000 秒, 然後利用 CPU 中的 task 切換每一個 Process、thread, 來讓使用者感覺到你程式是同時在執行的.
有人講到 Super-Scalar, 這是 thread 等級的平行處理技術, 這部份我還要再了解一下, 只是如果 Super-Scalar 真像某位朋友說的是平行...
|