1.03.2007

CreateThread & Priority

CE 有 0 - 255 個priority level,0最高。

這一頁
說明 CE 的Priority Level:

0 through 96 Reserved for real-time above drivers.
97 through 152 Used by the default Windows CE-based device drivers.
153 through 247 Reserved for real-time below drivers.
248 through 255 Maps to non-real-time priorities.
所以一般Device Driver 都社為100 (?)

CE要用 CeSetThreadPriority( )設定範圍才能有0 - 255。
用Win32標準的SetThreadPriority( )的話,範圍只有 8 個 (priority 最低的8個)。

CreateThread( null, 0, ThreadStartAddress, 給Thread的argument point, Create Suspend or Run, &ThreadId or Null)。

CreateThread( ) create出來的Priority會是 THREAD_PRIORITY_NORMAL (是多少?)。

有講到兩個限制:
  • 在Process Creating和 DLL initialization 中 create的 Thread要在 DLL Initialization 結束後才會被執行。
  • 每個Process ,每個DLL 只允許一個Thread 被create。
? Device Driver 算是 DLL ?
所以 Device Driver Create 的Process會在 Device Driver 的 xxx_init 結束後才會被執行? 而不是在呼叫CreateThread( )後 ?

沒有留言: