化工大学windows多线程编程资料.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
化工大学windows多线程编程资料

HANDLE hsem1=CreateSemaphore(NULL,5,10,sem1); HANDLE hsem2=CreateSemaphore(NULL,5,10,sem2); int i1=0; int i2=0; DWORD WINAPI ThreadFunc1(PVOID param) { for(int i=1;i=100;i++) { WaitForSingleObject(hsem1,INFINITE); ReleaseSemaphore(hsem2,1,NULL); i1++; file i1=i1 i2=i2endl; } return 0; } DWORD WINAPI ThreadFunc2(PVOID param) { for(int i=1;i=100;i++) { WaitForSingleObject(hsem2,INFINITE); ReleaseSemaphore(hsem1,1,NULL); i2++; file i1=i1 i2=i2endl; } return 0; } 线程的优先级决定它何时运行和接收多少CPU时间。 优先级共32级,是从0到31的数值,称为基本优先级别。 0-15级是普通优先级 线程的优先级可以动态变化 高优先级线程优先运行,只有高优先级线程不运行时,才调度低优先级线程运行。 优先级相同的线程按照时间片轮流运行。 进程与线程的优先级 进程与线程的优先级 16-31级是实时优先级 相同优先级线程的运行不按照时间片轮转,而是先运行的线程就先控制CPU,如果它不主动放弃控制,同级或低优先级的线程就无法运行。 进程与线程的优先级 线程的实际优先级设置是两个值的结合: 线程优先级 = 进程优先级类 + 线程相对优先级 进程优先级 进程优先级 标志 优先级值 idle IDLE_PRIORITY_CLASS 4 Below BELOW_NORMAL_PRIORITY_CLASS 此值在2000以下系统不支持 normal NORMAL_PRIORITY_CLASS 前台为9,后台为7 Above ABOVE_NORMAL_PRIORITY_CLASS 此值在2000以下系统不支持 high HIGH_PRIORITY_CLASS 13 Realtime REALTIME_PRIORITY_CLASS 24 线程优先级 线程优先级 标志 优先级值 idle THREAD_PRIORITY_IDLE 如果进程优先级为realtime则调整为16 ,其它情况为1 LOWEST THREAD_PRIORITY_LOWEST -2 Below THREAD_PRIORITY_BELOW_NORMAL -1 normal THREAD_PRIORITY_NORMAL 不变 Above THREAD_PRIORITY_ABOVE_NORMAL +1 high THREAD_PRIORITY_HIGHEST +2 CRITICAL THREAD_PRIORITY_TIME_CRITICAL 如果进程优先级为realtime则调整为31 ,其它情况为15 关于优先级的操作 在程序中,可以获取和更改进程和线程的优先级 对于进程的优先级类有如下函数: DWORD GetPriorityClass(HANDLE hProcess); BOOL SetPriorityClass(HANEL hProcess, DWORD dwPriority); 对线程的优先级有这两个函数: int GetThreadPriority(HANDLE hThread); BOOL SetThreadPriority(HANDLE hThread, int nPriority); 关于优先级的操作 SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_IDLE); //设置为最低 SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_LOWEST); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL); SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL); *  lpThreadAttributes:指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows NT中,它被设为NULL,表示使用缺省值。   dwStackSize,线程堆栈大小,一般=0,在任何情况下,

文档评论(0)

robert118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档