《Win32多线程程序设计》-侯杰【最后更新日期:16/02/23
来源:互联网 发布:免费的云计算平台 编辑:程序博客网 时间:2024/05/30 04:48
【读者背景:零基础】
第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多线程程序设计读书笔记
- 《Win32多线程程序设计》
- 《Win32 多线程程序设计》读书笔记
- Win32多线程程序设计基本概念
- 深入浅出Win32多线程程序设计
- win32多线程程序设计
- 深入浅出Win32多线程程序设计
- <<Win32多线程程序设计>>读书笔记
- 《Win32多线程程序设计》读书笔记
- win32多线程程序设计
- 《Win32多线程程序设计》读后感
- 深入浅出Win32多线程程序设计
- win32多线程程序设计
- Win32多线程程序设计
- 深入浅出Win32多线程程序设计
- 深入浅出Win32多线程程序设计
- WIN32多线程程序设计的基本概念
- android studio中导入PagerSlidingTabStrip开源库
- Emulation currently requires hardware acceleration
- 加密方式
- iOS海哥开发笔记 (海哥原创,NSCharacterSet 简单用法)
- 程序员面试题精选100题(32)-不能被继承的类[C/C++/C#]
- 《Win32多线程程序设计》-侯杰【最后更新日期:16/02/23
- NSData+Base64.h
- hdu 1722 Cake
- Ubuntu+Apache+PHP+Mysql环境搭建
- iOS海哥开发笔记 (海哥原创,C语言之内存四区模型和函数调用模型)
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- iOS软件安装图文教程(免证书)
- 安卓应用运行、卸载、清除数据、强制停止
- ios海哥开发笔记 (海哥原创,C语言之堆栈入门——堆和栈的区别 )