Windows Via C/C++:线程概述

本文深入探讨了线程的概念,包括线程与进程的区别、线程内核对象的作用及属性,以及如何在进程中创建和管理线程。文章还讨论了线程在实际应用中的优势,如节省系统资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程概述

理解线程是很重要的,因为进程的执行至少需要一个线程。本章会详细讨论线程,包括线程和进程之间的区别和各自的任务、线程内核对象及其属性、操作线程内核对象的各种方法、在进程内创建线程的方法等。

在第四章“进程”中,我们说过进程实际上由两部分组成:进程内核对象和进程地址空间。类似的,线程也包括两个部分:

  • 线程内核对象:用于操作系统用于管理线程、存储线程统计信息
  • 线程栈:存储线程执行时的所有函数参数和局部变量。第16章“线程栈”将进一步解释操作系统如何管理线程栈

进程是惰性的——它从不执行任何代码,它只是线程的容器。线程总是在某个进程环境中被创建、运行并且终止,也就是说线程在进程地址空间中执行代码、操作数据,因此进程中的多个线程将共享进程地址空间中的数据,包括进程的句柄表。

进程会消耗许多系统资源,这是因为进程需要地址空间。操作系统管理进程地址空间时需要保持大量的记录并消耗可观的内存,另外向进程地址空间载入dll和exe文件也会消耗一定的文件资源。与进程相比,线程消耗的系统资源非常有限——它仅仅需要一个内核对象和一个栈。因为使用线程的开销比较小,解决多任务问题时你应该尽量选择使用多线程而不是多进程。但是,这并不是金科玉律,有些情况使用进程会更好些,这需要设计者的权衡。

在揭示线程本质之前,让我们花一点时间来讨论如何在应用程序中正确的使用线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值