Windows多线程程序设计
来源:互联网 发布:mac如何网页看视频 编辑:程序博客网 时间:2024/06/06 15:01
中文名称:Windows多线程程序设计,译者:侯俊杰
听说这本书是学习windows编程必须看的书,于是就看一看。
petzold的widnows 程序设计还没有看完,太厚了。但是,发现这本书也可以看一看,其中对于多线程的许多内容我是知道的,所以理解起来比较容易。
花点时间,应该很快就能看完吧!
2012.7.31
Windows中多线程和unix的多线程看起来,差不太多。
Windows NT以其SMP技术,支持多CPU机器。每一个CPU执行一个不同的线程。任何一个线程可能在任何时候被任何一个CPU执行。一个双CPU的系统可以同时执行同一进程(或不同进程)的两个线程。在一个SMP系统中,多个线程真的可能被同时调用。多线程版本的C runtime library,可以防止在多线程时printf这样的函数被中断,会直到打印完成为止,再切换线程。
Win32核心对象清单:process,threads,files,events,semaphores,mutexes,Pipes.
全局变量不在heap中保存
线程ID是整个操作系统独一无二的。
GetEixtCodeThread可以判断线程是否正常退出了,并可以根据线程退出码lpExitCode来做一定的处理。
2012.8.1
临界区与mutex是有区别的,临界区用于线程间同步,而mutex用于多个进程之间的同步。mutex的开销要比临界区大得多!!
2012.8.6
在Win32中,mutex与semaphore这两种东西的拥有权(ownership)的意义完全不同,所以它们不能够交换使用。semaphores 不像 mu texes ,它并没有所谓的“wait abandoned”状态可以被其他线程侦测到。
WaitForSingleO bject()等待某个线程,WaitForMultipleObjects() 等待多个线程
2012.8.9
第四章
1. Event 对象之所以有大用途,正是因为它们的状态完全在你掌控之下。Mutexes 和 semaphores 就不一样了,它们的状态会因为诸如 WaitForSingleObject() 之类的函数调用而变化。所以,你可以精确告诉一个 event 对象做什么事,以及什么时候去做。
2. PostMessage和SendMessage是不同的,一个立即返回,一个是等待那边处理完了再返回。
第5章 不要让进程成为脱缰的野马
不要使用TerminateThread(),使用EVENT
第6 章 overlapped I/O
overlapped I/O 是 Win32 的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在 I/O 进行过程中仍然能够继续处理事务。
第7章 data consistency
1. C 和 C++ 有一个鲜为人知的关键字,教导编译器如何在一个 variable-by-variable 的基础上采取行动。这个关键字是 volatile 。这个关键字告诉编译器不要持有变量的临时
性拷贝。它可以适用于基础类型,如 int 或 long,也适用于一整个 C 结构或 C++ 类。后面这种情况下,结构或类的所有成员都会被视为 volatile 。
2. Readers/Writers lock
第8章
1. 如果你写一个多线程程序,而且没有使用 MFC ,那么你应该总是和多线程版本的 C Run-tim e Library 链接,并且总是以 _beginthreadex() 和 _endthreadex() 取代 CreateThread() 和 ExitThread() 。_beginthreadex() 的参数和 CreateThread() 一样,并且承担适度的 C runtime library 初始化工作。
2. Visual C++ 的折衷方案是提供两个版本的 C runtime library 。一个版本给单线程程序使用,一个版本给多线程程序使用。多线程版有两个很大的差别,第一,如 errno 之流的变量,现在变成每个线程各拥有一个。第二,多线程版中的数据结构以同步机制加以保护。
重要! MFC 程序必须使用多线程版的 C runtime library ,否则你就会在链接时获得“undefined function ”的错误信息。
第10章
MFC中Worker线程和UI线程。
第17章
COM的线程模型。
到现在为止,基本看完了一遍。这本书以Windows95/NT为参考,许多的东西太陈旧了吧?
但是,讲得很细!
匆匆掠过而已!
2012.8.22
- Windows 的多线程程序设计
- Windows程序设计---多线程1
- Windows程序设计---多线程2
- Windows程序设计---多线程1
- Windows程序设计---多线程2
- windows多线程程序设计
- Windows多线程程序设计初步
- Windows多线程程序设计
- Windows多线程程序设计- -
- Windows多线程程序设计
- windows程序设计(18):多线程程序设计
- Windows 的多线程程序设计初步
- Windows的多线程程序设计初步
- Windows程序设计 第二十章 多线程
- Windows程序设计(第2版)多线程
- Windows程序设计(第2版)多线程二
- Windows程序设计(第2版)多线程三
- Windows程序设计(第2版)多线程四
- Android 4.0新特性(中文)
- Ubuntu 各版本网易源
- GCD小结
- ASP.NET中CSS失效总结及解决方案
- 感光器尺寸 面积 转换 计算
- Windows多线程程序设计
- Bluez相关工具的使用
- ORA-01033 oracle initialization or shutdown in progress错误解决办法
- Android ADB error
- Flurry使用初级教程 (转)
- javascript收藏之photoGallery
- 玩转BealgeBoard xM——试水Android 4.0 ICS
- ARM开发常用的22个概念
- hdu2444二分图判断+最大匹配