C++系统相关-简单的多线程编程.pdfVIP

  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文档。上传文档
查看更多
C++系统相关:简单的多线程编程 #include using namespace std; DWORD WINAPI Thread1Proc( LPVOID lpParameter); //线程的执行 函数 DWORD WINAPI Thread2Proc( LPVOID lpParameter); //线程的执行 函数 int a; int b; int c; int temp(0); int sum(0); int main() { a=1; b=2; c=3; HANDLE hThread1=CreateThread(NULL,0,Thread1Proc,NULL,0,NULL); // 『留意 2』创立线程 1 HANDLE hThread2=CreateThread(NULL,0,Thread2Proc,NULL,0,NULL); //创立线 程 2 CloseHandle(hThread1); //关闭标识线程 1 的句柄 CloseHandle(hThread2); //关闭标识线程 2 的句柄 Sleep(5); // 『留意3』主线程放弃执行权,睡眠毫秒,以使线程和 线程得到执行时机 sum=temp; //主线程的执行语句 cout “sum= “sumendl; //主线程的执行语句 return 0; } DWORD WINAPI Thread1Proc( LPVOID lpParameter) { temp=a+b; return 0; } DWORD WINAPI Thread2Proc( LPVOID lpParameter) { temp+=c; return 0; } 代码说明:本代码简洁演示了多线程的创立方法。程序用包括主线程 在内的三个线程共同完成 sum=a+b+c 并输出计算结果的功能。其中,线程 1 完成 a+b 这一步,线程2 完成将 a+b 的结果与 c 相加这一步,主线程完 成输出计算结果这一步。整个程序很简洁,一目了然,但是,依旧有几个 地方需要留意: 『留意1』由于创立线程所使用的函数CreateThread()是 windows API 函数,所以,必需包含头文件windows.h 『留意2』CreateThread()函数有一个HANDLE 类型的返回值,用来 标识创立的线程,因此,应当定义一个 HANDLE 类型的变量用于保存这个 句柄(不是必需)。线程创立完成之后,假如不需要使用这个句柄变量, 应当将其关闭,以释放系统资源。关闭句柄的方法是调用CloseHandle() 函数。 『留意3』这里的 Sleep()函数的作用是使主线程放弃执行时机,让 其它线程开头执行。由于这个程序主线程内运行的代码很短,就两条短语 句,同常状况,这两条语句在一个系统时间片内就能跑完,然后就执行 return 语句返回,主线程就运行完毕了。主线程一完毕,程序就终止, 线程 1 和线程 2 将再也得不到执行时机。我们可以将 Sleep()解释起来, 然后运行程序,观看打印出来的 sum 值即可以发觉线程 1 和线程 2 是否得 到运行时机。固然,Sleep()不是必需的,这从系统调度线程的方式可以 看出来,多线程程序在开头运行时,系统会首先让主线程执行一段时间(时 间片),假如主线程在这个时间段内将全部代码都执行完了,程序就完毕, 否则,就将主线程挂起,然后让其他线程执行同样的一段时间,时间到了 之后,该线程挂起,又返回主线程开头执行,主线程再执行同样的一段时 间,然后再挂起,跳到其他线程执行,如此不断循环,直到主线程完全执 行完毕为止 由此可见,要想让非主线程能够被完整执行,那么只要使它 获得的时间片的总和大于或等于该线程连续执行完毕所需要的时间即可 基于此原理,我们想到,只要让主线程被屡次挂起即可使非主线程获得多

文档评论(0)

182****9516 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档