- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows多线程 操作系统课件
主要内容 Windows线程库介绍 使用win32线程API 多线程调试与优化技术 Windows线程库介绍 Win32 API Win32 API提供了一系列处理线程的函数接口,来向应用程序提供多线程的功能 用Win32 API直接编写应用程序要求程序员对Windows操作系统有一定的了解 直接用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型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,它被设为NULL。 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) ; 编译环境 在建立多线程的Windows程序时,需要在「Project Settings」对话框中做一些修改。选择「C/C++」页面标签,然后在「Category」下拉式清单方块中选择「Code Generation」。在「Use Run-Time Library」下拉式清单方块中,可以看到用于「Release」设定的「Single-Threaded」和用于Debug设定的「Debug Single-Threaded」。将这些分别改为「Multithreaded」和「Debug Multithreaded」。这将把编译器旗标改为/MT,它是编译器在编译多线程的应用程序所需要的。 线程管理 设置线程的优先级 线程优先级 = 进程优先级 + 线程相对优先级 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)