摘要: 部分转载自:http://blog.csdn.net/morewindows/article/details/7445233步骤: 1、CreateEvent,创建一个事件内核对象。 2、SetEvent,将一个事件内核对象设为触发状态。而WaitForSingleObject函数就是等待一个事件被触发后,才继续执行。其实就相当于一个通电开关,按下了,才通电,通电了,才能继续执行。 3、ResetEvent,将一个事件内核对象设为未触发状态。 4、CloseHandle,关闭内核对象。事件内核对象的个人理解: 1、事件对象可以分为2种,一种为自动重置事件,别一种为手动重置事件。 ... 阅读全文
posted @ 2013-09-23 12:49 Fly Hawk 阅读(711) 评论(0) 推荐(1) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7442639步骤: 1、创建一个CRITICAL_SECTION类型的变量,放在一个可以让所有的线程都可以访问的地方。 2、InitializeCriticalSection,初始化该变量 3、EnterCriticalSection,进入该临界区 4、LeaveCriticalSection,离开该临界区 5、DeleteCriticalSection,删除该临界区临界区的个人理解: 1、进入到临界区的代码,不能被其它线程给中断。也就是该段代码是以一种类似原子操作的方法来执... 阅读全文
posted @ 2013-09-23 09:55 Fly Hawk 阅读(607) 评论(0) 推荐(1) 编辑
摘要: 转载自:http://hi.baidu.com/lieyu063/item/351c75d4fb6f94cd1a72b4a5(1) _stdcall _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。WIN32 Api都采用_stdcall调用方式,按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数。(2)_cdecl _cdecl是C/C++的缺省调用方式,参数采用从右到左的压栈方式,传送参数的内存栈由调用者维护。_cedcl约定的函数只能被C/C++调用,每一个调用它的函数都包含清空堆.. 阅读全文
posted @ 2013-09-23 09:08 Fly Hawk 阅读(336) 评论(0) 推荐(1) 编辑
摘要: 阅读全文
posted @ 2013-09-23 08:28 Fly Hawk 阅读(179) 评论(0) 推荐(1) 编辑
摘要: #include #include #include #include using namespace std;BOOL GetProcessList(){ HANDLE hProcessSnap; HANDLE hProcess; PROCESSENTRY32 pe32; //对系统中当前所有的进程拍下快照 hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(hProcessSnap == INVALID_HANDLE_VALUE) { ret... 阅读全文
posted @ 2013-09-22 20:55 Fly Hawk 阅读(344) 评论(0) 推荐(1) 编辑
摘要: 题目: 以下多线程对int型变量x的操作,哪几个不需要进行同步(D) A. x=y; B. x++; C. ++x; D. x=1;为什么选择D?我写了一段代码,并进入到汇编模式:代码:#include using namespace std;void main(){ int x = 1, y = 2; x = y; x++; ++x; x = 1;}汇编后的代码:大家可以注意一下,只有x=1这个式子的代码是一行,所以没法中断,所以就没必要互斥。而互斥又是同步的一种。 阅读全文
posted @ 2013-09-21 21:34 Fly Hawk 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/8683830本篇介绍一个简单而又实用的进程通信方式——父进程向子进程传入参数并获取子进程返回值。这个非常简单:1.父进程向子进程传入参数可以由CreateProcess()函数来完成,注意子进程是通过GetCommandLine()来获取这个参数而且不是char *argv[]。2.父进程要获取子进程的返回值可以在等待子进程结束后通过GetExitCodeProcess并传入子进程句柄来获取子进程中main或WinMain函数的返回值。下面就结出实例代码,首先来看子进程的程序代码:[cp 阅读全文
posted @ 2013-09-21 11:31 Fly Hawk 阅读(1355) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/8260087本篇将讲解管道技术中的命名管道(Named Pipes),顾名思义,这个管道肯定是有名字的,联想到秒杀多线程面试题中的事件、互斥量、信号量(见附1),它们的名字主要是用于确保多个进程访问同一个对象。因此肯定也可以通过管道的名字来确保多个进程访问同一个管道。事实上,命名管道不仅可在同一台计算机的不同进程之间传输数据,甚至能在跨越一个网络的不同计算机的不同进程之间,支持可靠的、单向或双向的数据通信。先来看看如何创建和使用命名管道。第一个CreateNamedPipe函数功能:创建 阅读全文
posted @ 2013-09-21 11:23 Fly Hawk 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7390441计算机中管道pipe类似于现实世界中的水管道,在一端放入水流,另一端就会流出来。在计算机机中水流自然被数据流所代替了。计算机中管道分为匿名管道和命名管道,本篇将主要介绍用匿名管道来完成这一重定向输出任务,命名管道就留给下一篇来介绍了。先来看看如何创建和使用匿名管道。第一个CreatePipe函数功能:创建管道函数原型:BOOLWINAPICreatePipe(PHANDLEhReadPipe,PHANDLEhWritePipe,LPSECURITY_ATTRIBUTESlpP 阅读全文
posted @ 2013-09-21 11:11 Fly Hawk 阅读(1128) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7390350本篇将介绍输入输出的重定向问题,先来看一个小小的实例,设有一个程序,该程序的输入输出为标准输入输出即从键盘上输入,输出到屏幕。现在要重定向输入法输出,使程序从文件中读取数据,处理后输出到文件。程序代码如下(称此程序为示例程序):[cpp]view plaincopy#includeintmain(){intn;while(scanf("%d",&n)!=EOF)//标准输入时,可按ctrl+z来输入EOF{n*=2;printf("%d\ 阅读全文
posted @ 2013-09-21 10:54 Fly Hawk 阅读(571) 评论(0) 推荐(0) 编辑