转自:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E6%96%87/71405.shtml "C++Windows核心编程读书笔记":   关键词:c++windows 核心 编程 读书笔记   这篇笔记是我在读<windows核心编程>第5版时做的记录和总结(部分章节是第4版的书),没有摘抄原句,包含了很多我个人的思考和对实现的推断,因此不少条款和windows实际机制可能有出入,但应该是合理的.开头几章由于我…
原文链接在印象笔记(效果也好的多):https://app.yinxiang.com/l/AAQlNLnxTPRMAppVr5W0upchipQDDC_FHlU 概要: 现成也有两个组成部分: 现成的内核对象,操作系统用它管理现成.系统还用内核对象来存放现成统计信息的地方 线程栈,用于维护现成执行时所需的所有函数参数和局部变量 进程从来不执行任何东西,它只是一个线程的容器 现成必然是在某个进程的上下文中创建的,线程要在其进程的地址空间内执行代码和处理数据 线程还共享内核对象句柄,句柄表是针对每一…
第6章 线程的基础知识 理解线程是非常关键的,因为每个进程至少需要一个线程.本章将更加详细地介绍线程的知识.尤其是要讲述进程与线程之间存在多大的差别,它们各自具有什么作用.还要介绍系统如何使用线程内核对象来管理线程.与进程内核对象一样,线程内核对象也拥有属性,我们将要观察许多用于查询和修改这些属性的函数.此外还要介绍可以在进程中创建和生成更多的线程时所用的函数. 第4章介绍了进程是由两个部分构成的,一个是进程内核对象,另一个是地址空间.同样,线程也是由两个部分组成的: • 一个是线程的内核对象,…
今天特别困啊,这是为什么?!!刚刚把第一章看了一下,困到不行,所以写blog清醒一下. 第一章标题是“错误处理”,看了之后吓了一跳,难道第一章就讲这么高大上的东西?!不是不是,我现在的理解是,这章主要还是带我们感受一下以后遇到问题如何知道这个问题的描述. 我们在使用函数后,总会有一个结果:失败也好,成功也好.而这个结果,最终还是要以标识的形式落在地上的,章节内主要讲的是返回LONG/DWORD类型的情况.每个函数最后会返回一个错误代码给调用线程. 想要看返回的是啥,这里提供了一种方法:DWORD…
6.6 线程的一些性质 到现在为止,讲述了如何实现线程函数和如何让系统创建线程以便执行该函数.本节将要介绍系统如何使这些操作获得成功. 图6 - 1显示了系统在创建线程和对线程进行初始化时必须做些什么工作.让我们仔细看一看这个图,以便确切地了解发生的具体情况.调用 C r e a t e T h r e a d可使系统创建一个线程内核对象.该对象的初始使用计数是2(在线程停止运行和从C r e a t e T h r e a d返回的句柄关闭之前,线程内核对象不会被撤消) .线程的内核对象的其他…
第二十五章 线程基础 2014-06-28 25.1 Windows为什么要支持线程 25.2 线程开销 25.3 停止疯狂 25.6 CLR线程和Windows线程 25.7 使用专用线程执行异步的计算限制操作 25.8 使用线程的理由 25.9 线程调度和优先级 25.10 前台线程和后台线程 参考 25.1 Windows为什么要支持线程 返回 Microsoft设计OS内核时,他们决定在一个进程(process)中运行应用程序的每个实例.进程不过是应用程序的一个实例要使用的资源的一个集合…
每个线程都有一个CONTEXT结构,保存在线程内核对象中.大约每隔20ms windows就会查看所有当前存在的线程内核对象.并在可调度的线程内核对象中选择一个,将其保存在CONTEXT结构的值载入cpu寄存器.这被称为上下文切换.大约又过20ms  windows将当前cpu寄存器存回内核对象,线程被挂起.Windows再次检查内核对象,并在可调度的内核对象中选择一个进行调度.此过程不断重复直到系统关闭. Windows被称为抢占式多线程系统,系统可以在任何时刻停止一个线程而另行调度另外一个线…
前言 这俩个月没怎么写文章做记录分享,一直在忙项目上线的事情,但是学习这件事情,停下来就感觉难受,clr线程这章也是反复看了好多遍,书读百遍其义自见,今天我们来聊下线程基础 1.进程是什么,以及线程起源 2.线程开销,以及上线文切换 3.使用线程的理由 4.线程调度和优先级 5.前台线程和后台线程 一.进程是什么,以及线程起源 在计算机的早期岁月,os没有线程的概念,整个系统只运行者一个执行线程,其中包含操作系统和应用程序的代码.这意味着长时间运行的任务会阻止其他任务的运行.在16位window…
7.6 运用结构环境 现在应该懂得环境结构在线程调度中所起的重要作用了.环境结构使得系统能够记住线程的状态,这样,当下次线程拥有可以运行的C P U时,它就能够找到它上次中断运行的地方. 知道这样低层的数据结构也会完整地记录在 Platform SDK文档中确实使人吃惊.不过如果查看该文档中的C O N T E X T结构,会看到下面这段文字: "C O N T E X T结构包含了特定处理器的寄存器数据.系统使用 C O N T E X T结构执行各种内部操作.目前,已经存在为 I n t e…
与前面介绍的进程一样,线程也有两部分组成.一个是线程内核对象.它是一个数据结构,操作系统用它来管理线程以及用它来存储线程的一些统计信息.另一个是线程栈,用于维护线程执行时所需的所有函数参数和局部变量.位于同一个进程的线程共享进程的地址空间且它们共享进程句柄表.因为句柄表是针对进程的.进程需要很多的系统资源,而线程仅仅需要一个线程内核对象和线程栈就可以了,因此线程比进程的开销要小得多.采用多线程来处理问题也是理所当然的了. 采用多线程可以提高程序的执行效率,但是多线程也存在很多问题.在尝试使用多线…