《Win32多线程程序设计》-侯杰【最后更新日期:16/02/23
【读者背景:零基础】
第1章 为什么要千头万绪
我们通过API函数调整进程的优先级别是基于用户态的,核心态的进程优先级对用户是透明的,用户也无权干涉。
进程包含:内存和资源。资源包括核心对象(file handles和线程)、USESR资源(对话框和字符串)、GDI资源(Device Context和brushes)。
属于不同进程的线程,互相不能共享内存。而同一进程的线程,可共享进程的所有内存。若需要进程间通信,则要共享两进程的内存。
有一个任务,用单线程做两遍,比单核cpu用两个线程各做一遍速度要快。其中有context switch的时间消耗。
竞争条件(race conditions):假设两个进程P1和P2共享了变量a.在某一执行时刻,P1更新a为1,在另一时刻,P2更新a为2.因此两个任务竞争地写变量a.在这个例子中,竞争的“失败者”(最后更新的进程)据诶的那个了变量a的最终值。
原子操作:所谓原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会有任何context switch,目的是减少共享变量“可见性”的开销。
可见性:当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。(理解为同步)
第2章 为什么要千头万绪
多线程程序无法预期:多线程程序是无法预期其行为的(影响因素很多,例如,CPU的速度、线程的工作、CPU的忙碌程度等非常多的因素)。结果就是,如果程序完蛋了,很难重复其过程。
多线程程序的执行次序无法保证:线程的执行顺序无法保证。多个线程去完成相同的任务,并不确定最先开启的线程和最后开启的线程哪个先完成。
Task Switches可能在任何时刻任何地点发生。
线程对小的改变有高度的敏感:线程中增加一定的计算量,会使结果发生很大的变化。
-----------------------------------------------------------------------------------------------------------------------------------------------------------2016/2/23 16:27
《Win32多线程程序设计》-侯杰【最后更新日期:16/02/23相关推荐
- 深入浅出Win32多线程程序设计
引言 从单进程单线程到多进程多线程是操作系统发展的一种必然趋势,当年的DOS系统属于单任务操作系统,最优秀的成员员也只能通过驻留内存的方式实现所谓的"多任务",而如今的Win32操 ...
- 《win32多线程程序设计》学习笔记
写于2016年6月24日 " vim:fen:fdm=marker:fmr={{{,}}}:fdl=0:fdc=1:ts=2:sw=2:sts=2 "第一章 为什么千头万绪 {{{ ...
- 深入浅出Win32多线程程序设计之线程通信
简介 线程之间通信的两个基本问题是互斥和同步. 线程同步是指线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应等待,直到消息到达时才被唤醒. 线程互斥是 ...
- win32多线程程序设计笔记(第四章上)
前面已经介绍了线程的创建.销毁过程,如何判断一个线程是否结束:但是撰写多线程程序的一个挑战性问题就是:如何让一个线程和另外一个线程合作. 在同一时间段会存在多个线程,当这些线程同时存取同一数据时,就会 ...
- 《Win32多线程程序设计》学习笔记 第17章 OLE ActiveX COM
Apartment Model 在该模型中,一个对象和一个特定的线程有关联,只有在该线程的context之中才能够调用该对象. COM的"apartment"是一个对象产生,运作和 ...
- Win32多线程程序设计学习(第五章)
目录 不要让线程成为脱缰野马 1,干净地终止一个线程 "TerminateThread() 是一个危险的函数,应该在最不得已的情况下才使用" 2,线程优先权(Thread Prio ...
- 《Win32多线程程序设计》(11)---ResumeThread()SuspendThread()
初始化一个线程 HANDLE hThread; DWORD threadId; hThread = CreateThread(NULL, 0, ThreadFunc, 0, CREATE_SUSPEN ...
- Win32多线程编程(1) — 基础概念篇
内核对象的基本概念 Windows系统是非开源的,它提供给我们的接口是用户模式的,即User-Mode API.当我们调用某个API时,需要从用户模式切换到内核模式的I/O System Servic ...
- Win32 多线程学习总结
Win32多线程编程学习心得 http://blog.csdn.net/jonathan321/article/details/50782832 博客原文地址:http://jerkwisdom.gi ...
最新文章
- https HttpsURLConnection请求的单向认证
- 函数⑥作用域与命名空间
- AutoIt Windows的自动化脚本
- js文件位置--为甚有些js必须放在尾部
- 浅谈Stein算法求最大公约数(GCD)的原理及简单应用
- 号角响起!百度AI开发者实战营第二季教你用AI实现商业梦想
- 怎样选择mysql的版本升级_mysql版本升级
- [JOYOI1326] 剑人合一
- 用python偷懒Arcgis(地类编码转地类名称)
- 一个不错的Redis实战学习视频教程
- 解决win7卢布符号显示问题
- 农商银行计算机岗笔试题,广东农商银行金融科技岗笔试考什么?
- h5新语义化标签(重要)
- 程序猿爆笑选集(2)
- Autodask_3DMAX安装Failed Installation aborted, Result=1619解决办法
- iis服务器部署项目,IIS环境下部署项目的详细教程
- 计算机图形学中消隐的相关概念及算法
- 利用CSS计数函数counter()实现计数
- 工业产品类计算机绘图师,全国计算机绘图师考试试题汇总.pdf
- 山西计算机大赛崔奕,计算机系在华北五省(市、自治区)大学生机器人大赛山西赛区比赛获得佳绩...