win32多线程程序设计
文章平均质量分 77
空空大人
这个作者很懒,什么都没留下…
展开
-
win32多线程程序设计笔记(第二章)
第二章线程的第一次接触,主要讲了如何创建线程以及需要注意的几点。一、创建线程 与调用函数的过程类似;线程只不过用CreateThread的API将函数封装起来,并产生一个与主程序同时执行的程序来调用被封装的函数。HANDLE hThread = CreateThread ( LPSECURITY_ATTRI原创 2013-09-10 17:39:51 · 1077 阅读 · 0 评论 -
win32多线程程序设计笔记(第三章)
一、复习第二章在第二章中,讲到了两种等待线程的技术: 1)使用Sleep()函数——问题是你不可能事先知道什么事情要等待多久 2)使用busy loop,通过不断地调用GetExitCodeThread()这个函数来判断一个线程是否还在执行——问题是使用这个方法,必须持续不断的调用GetExitCodeThread(),直到其结果不再是STILL_A原创 2013-09-10 19:19:31 · 1024 阅读 · 0 评论 -
win32多线程程序设计笔记(第四章下)
上一笔记讲了同步机制中的临界区域(Critical Sections)、互斥器(Mutexes),下面介绍同步机制中的另外两种。信号量(Semaphores)举个例子: 现在有人要租车,接待他的代理人发现还有3辆车可以用,但正在给他办理手续的时候发现还有三个人也在做同样的动作。现在,就是有四个人想租三辆车。 我们写个程序解决租车问题,方法原创 2013-09-14 15:34:10 · 820 阅读 · 0 评论 -
win32多线程程序设计笔记(第四章上)
前面已经介绍了线程的创建、销毁过程,如何判断一个线程是否结束;但是撰写多线程程序的一个挑战性问题就是:如何让一个线程和另外一个线程合作。 在同一时间段会存在多个线程,当这些线程同时存取同一数据时,就会有问题。就像在超市储物品一样,来的时候物品箱是空,转身拿物品准备储的时候,发现物品箱已被占用了。这时,物品箱就是我所说的同一数据,人指的就是线程了。 线程之间的原创 2013-09-14 11:16:16 · 1140 阅读 · 0 评论 -
win32多线程程序设计笔记(第五章)
前面章节介绍了线程创建等过程,现在的问题是:如何在某个线程内终止另外一个正在运行的线程?windows核心编程中提到终止运行线程的方法: 1)线程函数自己返回; 2)线程通过调用ExitThread函数“杀死”自己,该函数将终止线程的运行并导致操作系统清理该线程使用的所有操作系统资源,但是使用的C/C++资源不会被销毁(慎用); 3)调用原创 2013-09-15 17:13:29 · 1117 阅读 · 0 评论 -
使用_beginthreadex()创建线程
前面一直讲到使用CreateThread来创建线程,那么这章告诉你应该使用_beginthreadex()取代CreateThread()。一、使用_beginthreadex() 需要的头文件支持#include // for _beginthread() 需要的设置:ProjectàSetti转载 2013-09-30 19:13:08 · 1991 阅读 · 0 评论 -
win32多线程程序设计笔记(第六章上)
我们知道当程序调用I/O设备处理一些事情时,让主程序停下来干等I/O的完成是没有效率的。。对这个问题有下面几种解决方法:方法一:使用另一个线程进行I/O。问题是在主线程中操控多个线程,如何设置同步机制、如何处理错误情况都是非常复杂麻烦的。方法二:使用overlapped I/O(就是所谓的异步asynchronous I/O,第四章讲到了同步机制),你可以让这些I/O操作并行处理。原创 2013-09-15 18:54:17 · 1024 阅读 · 0 评论 -
win32多线程程序设计笔记(第六章下)
接着,我们讲解具体overlap I/O的使用。对于overlapped I/O的讨论,从简单的应用开始,然后再演变到最高级的应用: 激发的文件handles; 激发的Event对象; 异步过程调用(APCs); I/O completion ports一、激发的文件Handles原创 2013-09-28 21:10:27 · 1249 阅读 · 0 评论