摘要: 题目: 以下多线程对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) 编辑
摘要: 一、WM_COPYDATA: 是一个用来处理接受其它应用程序发送的数据的消息。二、方法 1、获取另一个程序的句柄 2、接受方重载WM_COPYDATA消息 3、将数据放在一个COPYDATASTRUCT结构中三、注意 该消息只能由SendMessage()来发送,而不能使用PostMessage()。因为系统必须管理用以传递数据的缓冲区的生命期,如果使用了PostMessage(),数据缓冲区会在接收方(线程)有机会处理该数据之前,就被系统清除和回收四、代码: 参考:http://blog.csdn.net/morewindows/article/details/6804157 阅读全文
posted @ 2013-09-21 10:42 Fly Hawk 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 一、方法: 1、创建一个边界 2、如何将对应于本地管理员(Local Administrators)的一个安全描述符(security identifier, SID)和它关联起来 3、如何创建或者打开其名称被用途互斥量内核对象前缀的一个专有命名空间。 {边界描述符将获得一个名称,但更重要的是,它会获得与它关联的一个特权用户组的SID,这样一来,Windows就可以确保只有在该用户隶属于这个特权组时,以其身份运行的应用程序才能在相同的边界中创建相同的使空间} 二、代码: //边界句柄 HANDLE g_hBoundary = NULL; //这个不是内核对象,而是一... 阅读全文
posted @ 2013-09-21 10:20 Fly Hawk 阅读(998) 评论(0) 推荐(0) 编辑