The First Time a Thread Is Scheduled After Its Creation Does Not Run at the Expected Time (323461)
The information in this article applies to:
- Microsoft Windows CE Platform Builder 4.0
- Microsoft Windows CE .NET 4.0
This article was previously published under Q323461 SYMPTOMS
The first time a thread is scheduled after its creation, it may not run at the expected time. Any interrupt may cause a reschedule away from the thread to a thread of equal priority, even if the thread quantum has not expired.
CAUSE
The counter for thread quantum-time remaining is left set at 0 when a new thread is created.
RESOLUTIONA supported fix is now available from Microsoft as Windows CE Core OS QFE . To resolve this problem immediately, search for the keyword "QFE" on the following Microsoft Web site:
The English version of this package should have the following file attributes or later:
Size File name
-----------------------------------------------
2,198,112 020607_armv4i_wce40-q323461.exe
2,181,728 020607_armv4t_wce40-q323461.exe
2,194,016 020607_armv4_wce40-q323461.exe
2,189,920 020607_mips16_wce40-q323461.exe
2,374,240 020607_mipsii_fp_wce40-q323461.exe
4,299,360 020607_mipsii_wce40-q323461.exe
2,480,736 020607_mipsiv_fp_wce40-q323461.exe
2,357,856 020607_mipsiv_wce40-q323461.exe
2,030,176 020607_sh3_wce40-q323461.exe
2,054,752 020607_sh4_wce40-q323461.exe
1,911,392 020607_x86_wce40-q323461.exe
The English version of this fix has the file attributes (or later) that are listed in the following table.
Date Time Size File name Platform
------------------------------------------------------------------
22-May-02 13:33 1,742,526 Nkmain.lib armv4\debug
22-May-02 13:33 110,592 Nkmain.pdb armv4\debug
22-May-02 13:33 1,853,274 Nkprmain.lib armv4\debug
22-May-02 13:33 110,592 Nkprmain.pdb armv4\debug
22-May-02 13:33 1,115,300 Nkmain.lib armv4\retail
22-May-02 13:33 110,592 Nkmain.pdb armv4\retail
22-May-02 13:33 1,207,304 Nkprmain.lib armv4\retail
22-May-02 13:33 110,592 Nkprmain.pdb armv4\retail
22-May-02 13:36 1,746,450 Nkmain.lib armv4i\debug
22-May-02 13:36 110,592 Nkmain.pdb armv4i\debug
22-May-02 13:36 1,857,448 Nkprmain.lib armv4i\debug
22-May-02 13:36 110,592 Nkprmain.pdb armv4i\debug
22-May-02 13:35 1,119,296 Nkmain.lib armv4i\retail
22-May-02 13:35 110,592 Nkmain.pdb armv4i\retail
22-May-02 13:36 1,211,578 Nkprmain.lib armv4i\retail
22-May-02 13:36 110,592 Nkprmain.pdb armv4i\retail
22-May-02 13:35 1,615,586 Nkmain.lib armv4t\debug
22-May-02 13:35 110,592 Nkmain.pdb armv4t\debug
22-May-02 13:35 1,719,422 Nkprmain.lib armv4t\debug
22-May-02 13:35 110,592 Nkprmain.pdb armv4t\debug
22-May-02 13:34 1,102,464 Nkmain.lib armv4t\retail
22-May-02 13:34 110,592 Nkmain.pdb armv4t\retail
22-May-02 13:34 1,193,190 Nkprmain.lib armv4t\retail
22-May-02 13:34 110,592 Nkprmain.pdb armv4t\retail
22-May-02 13:41 1,788,362 Nkmain.lib mips16\debug
22-May-02 13:41 110,592 Nkmain.pdb mips16\debug
22-May-02 13:41 1,909,850 Nkprmain.lib mips16\debug
22-May-02 13:41 110,592 Nkprmain.pdb mips16\debug
22-May-02 13:40 997,184 Nkmain.lib mips16\retail
22-May-02 13:40 110,592 Nkmain.pdb mips16\retail
22-May-02 13:41 1,093,568 Nkprmain.lib mips16\retail
22-May-02 13:40 110,592 Nkprmain.pdb mips16\retail
22-May-02 13:38 1,784,508 Nkmipsiibmain.lib mipsii\debug
22-May-02 13:38 110,592 Nkmipsiibmain.pdb mipsii\debug
22-May-02 13:38 1,786,188 Nkmipsiimain.lib mipsii\debug
22-May-02 13:38 110,592 Nkmipsiimain.pdb mipsii\debug
22-May-02 13:38 1,906,184 Nkprofmipsiibmain.lib mipsii\debug
22-May-02 13:38 110,592 Nkprofmipsiibmain.pdb mipsii\debug
22-May-02 13:38 1,907,864 Nkprofmipsiimain.lib mipsii\debug
22-May-02 13:38 110,592 Nkprofmipsiimain.pdb mipsii\debug
22-May-02 13:37 1,134,784 Nkmipsiibmain.lib mipsii\retail
22-May-02 13:37 110,592 Nkmipsiibmain.pdb mipsii\retail
22-May-02 13:37 1,136,634 Nkmipsiimain.lib mipsii\retail
22-May-02 13:37 110,592 Nkmipsiimain.pdb mipsii\retail
22-May-02 13:37 1,237,510 Nkprofmipsiibmain.lib mipsii\retail
22-May-02 13:37 110,592 Nkprofmipsiibmain.pdb mipsii\retail
22-May-02 13:37 1,239,362 Nkprofmipsiimain.lib mipsii\retail
22-May-02 13:37 110,592 Nkprofmipsiimain.pdb mipsii\retail
22-May-02 13:42 1,854,328 Nkmain.lib mipsII_fp\debug
22-May-02 13:42 110,592 Nkmain.pdb mipsII_fp\debug
22-May-02 13:43 1,976,020 Nkprmain.lib mipsII_fp\debug
22-May-02 13:43 118,784 Nkprmain.pdb mipsII_fp\debug
22-May-02 13:42 1,196,236 Nkmain.lib mipsII_fp\retail
22-May-02 13:42 110,592 Nkmain.pdb mipsII_fp\retail
22-May-02 13:42 1,299,070 Nkprmain.lib mipsII_fp\retail
22-May-02 13:42 118,784 Nkprmain.pdb mipsII_fp\retail
22-May-02 13:40 1,843,438 Nkmain.lib mipsiv\debug
22-May-02 13:40 110,592 Nkmain.pdb mipsiv\debug
22-May-02 13:40 1,967,962 Nkprmain.lib mipsiv\debug
22-May-02 13:40 110,592 Nkprmain.pdb mipsiv\debug
22-May-02 13:39 1,192,472 Nkmain.lib mipsiv\retail
22-May-02 13:39 110,592 Nkmain.pdb mipsiv\retail
22-May-02 13:39 1,298,594 Nkprmain.lib mipsiv\retail
22-May-02 13:39 110,592 Nkprmain.pdb mipsiv\retail
22-May-02 13:44 1,919,304 Nkmain.lib mipsiv_fp\debug
22-May-02 13:44 110,592 Nkmain.pdb mipsiv_fp\debug
22-May-02 13:44 2,043,850 Nkprmain.lib mipsiv_fp\debug
22-May-02 13:44 118,784 Nkprmain.pdb mipsiv_fp\debug
22-May-02 13:43 1,260,668 Nkmain.lib mipsiv_fp\retail
22-May-02 13:43 110,592 Nkmain.pdb mipsiv_fp\retail
22-May-02 13:43 1,366,844 Nkprmain.lib mipsiv_fp\retail
22-May-02 13:43 118,784 Nkprmain.pdb mipsiv_fp\retail
22-May-02 13:31 1,449,756 Nkmain.lib sh3\debug
22-May-02 13:31 110,592 Nkmain.pdb sh3\debug
22-May-02 13:31 1,547,904 Nkprmain.lib sh3\debug
22-May-02 13:31 110,592 Nkprmain.pdb sh3\debug
22-May-02 13:30 973,798 Nkmain.lib sh3\retail
22-May-02 13:30 102,400 Nkmain.pdb sh3\retail
22-May-02 13:30 1,064,472 Nkprmain.lib sh3\retail
22-May-02 13:30 110,592 Nkprmain.pdb sh3\retail
22-May-02 13:32 1,468,026 Nkmain.lib sh4\debug
22-May-02 13:32 102,400 Nkmain.pdb sh4\debug
22-May-02 13:32 1,566,184 Nkprmain.lib sh4\debug
22-May-02 13:32 110,592 Nkprmain.pdb sh4\debug
22-May-02 13:31 991,102 Nkmain.lib sh4\retail
22-May-02 13:31 102,400 Nkmain.pdb sh4\retail
22-May-02 13:32 1,081,838 Nkprmain.lib sh4\retail
22-May-02 13:32 110,592 Nkprmain.pdb sh4\retail
22-May-02 13:29 1,477,360 Nkmain.lib x86\debug
22-May-02 13:29 110,592 Nkmain.pdb x86\debug
22-May-02 13:29 1,575,244 Nkprmain.lib x86\debug
22-May-02 13:29 110,592 Nkprmain.pdb x86\debug
22-May-02 13:29 953,550 Nkmain.lib x86\retail
22-May-02 13:29 110,592 Nkmain.pdb x86\retail
22-May-02 13:29 1,037,082 Nkprmain.lib x86\retail
22-May-02 13:29 110,592 Nkprmain.pdb x86\retail
MORE INFORMATION
For each thread, the Windows CE operating system maintains a counter for thread quantum remaining. When the counter reaches 0, the quantum time is expired, and other threads of equal priority may be scheduled. When a new thread is created, the counter is incorrectly left set to 0, which means that the thread is immediately subject to reschedule. After the reschedule is complete, the counter is reset to the default quantum, and future thread scheduling proceeds.
This QFE changes the kernel's thread-creation code to set the value of the thread quantum remaining equal to the default thread quantum, so that when the thread is scheduled for the very first time, it can use a full thread quantum.
STATUSMicrosoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article.
Modification Type: | Minor | Last Reviewed: | 6/30/2005 |
---|
Keywords: | kbbug kbenv kbfix kbQFE KB323461 |
---|
|