2010年2月22日 星期一

Thread

  1. 每次碰到 Thread就很頭大,不知道哪個執行緒會先完成,哪個又會被呼叫...雖然可以針對每條thread做Priority的設定,但這又扯到CPU的架構,跟硬體的loading....X86跟MIPS底下,想同的程式碼,跑出來的Performance也會有差. 底下大概介紹一下不同架構的差異性,我們在之後會詳述每個Architecture. X86 : http://en.wikipedia.org/wiki/X86 MIPS:http://en.wikipedia.org/wiki/Instructions_per_second
  2. Threads 的種類 Kernel Thread 即 Thread 由 Kernel Create 和 Distory, 共同生活在 Kernel space中.如Display, KeyBoard Access ...Driver control,系統要run 時所要用到的Process. Lightweight Process 特別是指給 User用的 Kernel Thread,因為 Kernel Thread 分為給user用和自己用的兩部份(asychronous I/O, ex: disk write),所以 Lightweight Process 也就是 Kernel Thread.如 HardDisk 的存取, USB...,平常不需要時會idle,等需要用到時才Wake Up. User Thread 由 Library 控制. Creating, Scheduling, Synchronization, Managing... 都由 Library 負責, Kernel 跟它是獨立的
  3. Thread Sample code 假設我們現在有4個獨立的Thread,不考慮join的問題.分別為Priority 1,2,3,4.且模擬執行時所需要的時間,預設為3s. 我們發現當執行之後,thread會沒有跑完.而死在裡面. 如果把 sleep 8 打開後,發現所有的thread 都做完了.如果以單一個Procss來看四個至少要4*3=12s,但用thread之後, performance 還小於8 s, 看來裡面有用到Parallel的機制. 程式碼下載 http://sites.google.com/site/funningboy/perl_code/thread.pl?attredirects=0&d=1

1 則留言:

  1. Perl Thread
    http://migo.sixbit.org/papers/Perl_Threads/slide-index.html

    回覆刪除