- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
进程静态上下文,线程的容器进程不被执行,线程被执行系统中同时最多只能有32个进程:对大多数嵌入式系统来说都已经足够。推荐用多线程而不是多进程迎合一些体系结构的支持WindowsCE使用与WindowsXP一样的加载/卸载模型(与其它桌面Window一样)支持命令行程序但是与桌面Win32API不一样调用CreateProcess()启动进程线程Win32的执行的单元按照优先级调度高优先级的线程会抢占低优先级的线程同样的优先级使用Round-Robin算法默认的时间片是100毫秒,OEM可以在OAL中重新设置线程调度线程A拥有最高的优先级,他会一直执行直到结束或阻塞线程B和C使用Round-Robin算法运行在round-robin每个线程都运行一个固定的时间,叫做时间片优先级数字越小,优先级越高线程优先级分布图(例)PriorityComponent0-19Open–RealTimeAboveDrivers20GraphicsVerticalRetrace99PowermanagementResumeThread100-108USBOHCIUHCI,Serial109-129IRSIR1,NDIS,Touch130KITL131VMini132CxPort145PS2Keyboard148IRComm150TAPI248PowerManagement249WaveDev,Mouse,PnP,Power250WaveAPI251Normal252-255Open-Applications优先级反转AvoidpriorityinversionbykeepingallthreadswaitingforsameresourceatthesamepriorityThread3HighPriorityMediumPriorityLowPriorityThread3ResourceOwner:Thread2Thread1Thread1Priority
InversionPreemptPreemptBlockedPriority
RestoredThread3Example:Thread1blockedwaitingforresourceownedbyThread3,causingPriorityInversionThread3BlockedThread1Thread2BlockedThreadAPICreateThread–创建一个普通优先级的线程线程创建GetThreadPriority–当前线程的优先级SetThreadPriority–改变当前线程的优先级(251)CeGetThreadPriority–得到实时线程的优先级CeSetThreadPriority–改变实时线程的优先级线程优先级Sleep(0)–放弃剩余的时间片Sleep(n)–睡指定的毫秒Sleep(INFINITE)SleepTillTick–睡到下一个系统嘀嗒SuspendThread–增加休眠的引用计数ResumeThread–减少休眠的引用计数线程睡眠进程线程WindowsCE进程不支持环境变量_wfopen(L“%WINDOWS%\\a.txt”,L“w”); //errorWindowsCE进程不支持当前目录_wfopen(L“a.txt”,L“w”); //error,firstsearchrootdirectory,thensearch\Windowsdirectory.同步对象线程需要同步对象在某些时候进行同步操作。同步对象类型CriticalSectionMutexSemaphoreEvent也可以使用子增函数或者点对点消息队列同步(CriticalSections)概览允许多个线程共享访问同一块数据使用互斥访问保护数据其他线程会block直到占有者放弃临界区每个CS都是OS提供的一个数据结构,只能在同一个进程内部使用,比MUTEX要高效。函数InitializeCriticalSection分配CRITICAL_SECTION结构EnterCriticalSection调用着在占有CS的人调用LeaveCriticalSection之前会阻塞TryEnterCrit
文档评论(0)