Windows多线程基础原理
线程的基本原理其实不难,关键是你得搞清楚线程和进程到底是啥关系。线程的线程,说白了就是程序里跑任务的小分身。像开个下载任务、做个图像渲染,都可以扔给不同的线程干,各忙各的,效率高多了。
线程的核心,是操作系统用来调度和管理的线程内核对象。它就像线程的身份证,里头记录着优先级、状态、句柄啥的。如果你之前摸过进程内核对象,那这部分其实挺眼熟的。想改属性、查状态,都有专门的 API,响应也快,代码也简单。
还有一点你没注意,多人用多线程只是调用了CreateThread
就完事,其实背后系统做了不少事,比如分配资源、注册线程句柄、关联对象什么的。要是你想深入搞清楚怎么用得更稳、更快,建议多看看相关的同步机制,比如线程与内核对象的同步这篇,讲得挺细。
另外像定时器线程、自动重置事件这些,自动事件重置内核对象和timerex 运用定时器内核对象也都值得看看,挺适合做调度任务或限流控制的。工具方面嘛,winobj这个内核对象查看器蛮实用的,能帮你理清楚线程和对象的对应关系,开发调试都方便不少。
如果你平时做 Windows 下的多线程开发,尤其是对线程调度、内核对象这块有点好奇,建议你把这些文档都过一遍,理解起来不难,还能提升不少实战技巧。
下载地址
用户评论