操作系统课件: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线程 Win32 API Win32 API提供了一系列处理线程的函数接口 直接用Win32 API编写的应用程序,执行代码小,运行效率高 MFC 用类库的方式将Win32 API 封装, 以类的方式提供给开发者 提供了对多线程的支持 MFC对同步对象作了封装 MFC具有其快速、简捷、功能强大等特点 .NET Framework 由两部分构成:公共语言运行库(CLR)和Framework类库(FCL) CLR包括自己的文件加载器、垃圾收集器、安全系统等 Framework类库提供了所有应用程序模型都要使用的一个面向对象的API集合 使用win32线程API 线程创建 HANDLE CreateThread ( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId ); CreateThread的参数 lpThreadAttributes是指向SECURITY_ATTRIBUTES型态的结构的指针。 dwStackSize是用于新线程的初始堆栈大小,默认值为0。在任何情况下,Windows根据需要动态延长堆栈的大小。 lpStartAddress是指向线程函数的指标。函数名称没有限制,但是必须以下列形式声明: DWORD WINAPI ThreadProc (PVOID pParam) ; lpParameter为传递给ThreadProc的参数。这样主线程和从属线程就可以共享数据。 dwCreationFlags通常为0,但当建立的线程不马上执行时为指标CREATE_SUSPENDED。线程将暂停直到呼叫ResumeThread来恢复线程的执行为止。 lpThreadId是一个指标,指向接受执行者ID值的变量。 _beginthread 可以用_beginthread 代替: PROCESS.H表头文件中声明的C执行时期链接库函数_beginthread。它的语法如下: hThread = _beginthread (ThreadProc, uiStackSize, pParam) ; 这个线程函数的语法为: void __cdecl ThreadProc (void * pParam) ; 编译环境    线程管理 设置线程的优先级 线程优先级 = 进程优先级 + 线程相对优先级 Bool SetThreadPriority (HANDLE hPriority , int nPriority) 线程的挂起与恢复 进程中的每个线程都有挂起计数器(suspend count) 。当挂起计数器值为0 时,线程被执行;当挂起计数器值大于0 时,调度器不去调度该线程。 DWORD SuspendThread(HANDLE hThread); DWORD ResumeThread(HANDLE hThread); 线程等待 能使线程阻塞其自身执行的等待函数: DWORD WaitForSingleObject(HANDLE hObject, // 等待的核心对象 DWORD dwTimeout ) ; // 线程愿意等待的毫秒数(值为INFINITE时表示无限等待) 返回值 定义 含义 WAIT_OBJECT_0 0 对象达到有信号 WAIT_TIMEOUT 0 对象没有在dwTimeout毫秒内到达有信号状态 WAIT_ABANDONED 0对象是一个互斥量,由于它被放弃了而达到有信号状态 WAIT_FAILED 0xFFFFFFFF 发生错误。调用GetLastError以取得扩展的错误信息 DWORD WaitForMultipleObject(DWORD cObject, // 检查核心对象的数目 LPHANDLE lpHandles, // 指向这些对象的句柄的数组 BOOL bWaitAll, // 是否等待所有对象变成有信号 DWORD dwTimeout); // 线程愿意等待的时间(毫秒数) 线程终结 在线程的里面终止线程 VOID ExitThread (DWORD dwExitCode) ; 在线程的外面终止线程 BOOL TerminateThread (HANDLE hThread, DWORDdw ExitCode) ; 例子1

您可能关注的文档

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档