2010年12月25日

《Win32多线程程序设计》学习笔记 第6章 Overlapped I/o 在你的身后变戏法

摘要: 这章很重要,所以才把放到最后写,压轴,同时希望自己能认真的总结一下。这一章主要就是异步编程的内容,自己的理解Overlapped I/O是win32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。事实上,操作系统内部正是以线程来完成overlapped I/O,你可以获得线程的所有利益不需要付出什么代价。Win32文件操作函数 win32中有3个基本的函数来执行I/O,分别是CreateFile, ReadFile, WriteFile. 关闭文件调用CloseHandle即可。CreateFile可以用来打开各种资源,包括(不限于) 文件(硬盘,光盘,软盘或其他) 串行口 阅读全文

posted @ 2010-12-25 22:01 一颗麦粒 阅读(359) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第7章 数据一致性

摘要: 本章描述volatile关键字的使用,并讨论reader/writer lock的设计和运用。volatile关键字 我们写的程序经过编译器的编译之后, 编译器可能会将某些数据放到寄存器中,如果有一个线程改变了变量在内存中的值,其寄存器中的拷贝没有同步的被改,造成了数据的不一致。volatile关键字告诉编译器不要持有变量的临时性拷贝。它可以适用于基本类型,C结构和C++类,如果是后者,那么类的所有成员都会被视为volatile。使用这个关键字,并不会否定 线程同步的需要。Reference Integrity 这个我觉得就是一个锁定颗粒的问题。如果一个结构有很多组成部分,每个部分都有一个锁定 阅读全文

posted @ 2010-12-25 21:15 一颗麦粒 阅读(193) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第12章 调试

摘要: 有计划的对付错误在每一个你的假设指出做检验工作。进入一个函数时,确认所有状态,不要只是检查指针是否合法;如果可能,检查一下指针所指结构中的数据是否一致。线程对话框 VC调试器支持多线程的情况。我们可以挂起要调试的线程之外的所有线程,从而将调试焦点放在某个线程身上。运转记录 就是使用输出如printf将程序的运行状态输出出来,用于调试,这些输出一般输出到标准输出,很容易重定向到文件中。在stdout中记录运行过程,并不能抱枕你看到的输出次序就是实际的运行次序,这是由于多线程版本的C Runtime library使用互斥保证每次只有一个线程使用stdout,所以在运行和写入stdout中间,可能 阅读全文

posted @ 2010-12-25 20:55 一颗麦粒 阅读(207) 评论(0) 推荐(0) 编辑

《Win32多线程程序设计》学习笔记 第11章 GDI 与窗口管理

摘要: Win32中,每个线程都有自己专属的消息队列,并不是每个窗口都有自己的消息队列。因为每个线程能够产生很多窗口,如果一个线程停止响应,或者它忙于一段耗时的计算工作,那么由它差生的窗口统统都会停止响应,但系统中的其他窗口还是继续正常的运作。所有传递给某一窗口的消息,将由产生该窗口之线程负责处理。 对窗口所做的任何一个事情基本上都由该窗口的窗口函数处理,并因此被产生该窗口的线程处理。SendMessage()同一线程:直接调用窗口函数不同线程:切换到新线程并调用窗口函数 ,在该函数返回之前,SendMessage不会返回(所以会发生意Context Switch,比一般函数调用费时间)PostMes 阅读全文

posted @ 2010-12-25 20:26 一颗麦粒 阅读(253) 评论(0) 推荐(0) 编辑

导航