windows核心编程
文章平均质量分 62
chinaclock
这个作者很懒,什么都没留下…
展开
-
重叠模型
<br /> 一、 异步IO 收藏<br />一、 异步IO<br /> 说到重叠模型首先还是提一下异步IO比较好,因为从本质上讲,重叠模型也是一种异步IO模型。<br /> 我们知道,相对于计算机执行的其他操作而言,设备IO(文件、管道、套接字等)是比较慢的。于是在多线程结构中就考虑到采用异步的方式进行设备读写操作,即我们告诉系统对设备的读写数据,而同时应用程序的其他代码继续执行,直到获取设备操作完毕的系统通知。<br /> 在进行异步IO时,我们先向系统发出IO请求转载 2010-07-05 23:40:00 · 887 阅读 · 0 评论 -
Overlapped模型深入分析(原理篇)
<br />摘自Overlapped模型深入分析(原理篇) 简述: Overlapped I/O也称Asynchronous I/O,异步I/O模型。异步I/O和同步I/O不同,同步I/O时,程序被挂起,一直到I/O处理完,程序才能获得控制。异步I/O,调用一个函数告诉OS,进行I/O操作,不等I/O结束就立即返回,继续程序执行,操作系统完成I/O之后,通知消息给你。Overlapped I/O只是一种模型,它可以由内核对象(hand),事件内核对象(hEvent), 异步过程调用(apcs) 和转载 2010-07-05 23:51:00 · 1008 阅读 · 0 评论 -
CreateFile函数详解
CreateFile函数详解摘自:http://www.cppblog.com/yishanhante/archive/2009/06/22/19545.html#88298<br />CreateFile <br />The CreateFile function creates or opens the following objects and returns a handle that can be used to access<br />the object:<br /> files<br />转载 2010-07-06 00:05:00 · 602 阅读 · 0 评论 -
同步对象Event的用法
<br /><br /><br />首先介绍CreateEvent是创建windows事件的意思,作用主要用在判断线程退出,线程锁定方面.<br />CreateEvent函数功能描述:创建或打开一个命名的或无名的事件对象.<br />EVENT有两种状态:发信号,不发信号。 <br />SetEvent/ResetEvent分别将EVENT置为这两种状态分别是发信号与不发信号。 <br />WaitForSingleObject()等待(阻塞),直到参数所指定的OBJECT成为发信号状态时才返回,OBJE原创 2010-07-05 19:58:00 · 2681 阅读 · 0 评论 -
关于线程安全退出
<br /> <br />之前的想法是,如果尽量不要在线程中分配内存,这样当线程没有正常退出时,很容易就出现内存泄漏的情况。<br />所以在这里的test代码也是如此,没有在线程中分配内存,而是在主线程中分配的内存供线程使用。<br /> <br /> 关于线程正常退出的关键在于:如果在设置了控制线程函数循环的标志位workstatus为false,也需要等待将正在执行的这次循环执行完,才能释放线程中的使用的内存。但是不清楚线程退出了此次的while功能语句的循环需要多长时间,如果时间长了,主线程原创 2010-09-18 15:14:00 · 5135 阅读 · 1 评论 -
DLL为啥要使用MD模式--运行时对象越过DLL边界的潜在错误
当传递一个c运行时对象,例如句柄,本地变量,环境变量时,进入或者传出一个Dll(函数调用越过了Dll边界),那么如果这个动态库也正将文件调入动态库,且使用了不同的CRT库的副本,那么可能会有无法预期的现象出现。 当分配内存(显式的使用malloc或者new,以及隐式的使用strup等)然后将指针传过一个动态库的边界去释放时,可能会有一个于此相关联的问题出现。如果这个动态库和他的用户使用的是crt库翻译 2015-03-17 16:46:15 · 928 阅读 · 0 评论 -
理解操作系统的sleep函数
写的很形象,分享一下http://www.cnblogs.com/ILove/archive/2008/04/07/1140419.html我们可能经常会用到 Thread.Sleep 函数来使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢?思考下面这两个问题:假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(100转载 2015-09-24 16:14:18 · 9830 阅读 · 4 评论 -
句柄泄露与CloseHandle()
摘自:http://blog.chinaunix.net/uid-21783276-id-2689047.htmlCloseHandle()函数的使用??很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚转载 2015-11-23 17:19:10 · 4940 阅读 · 0 评论 -
DLL进程退出时出现死锁问题
如果一个dll的进程中的进程需要退出时, 一般会获取到进程互斥锁,然后执行dllmain的DLL_PROCESS_DETACH分支的代码,若此时有开始让线程A销毁且,此时在这个地方有等待子线程完全销毁的waitForMultipleObjects的操作。 假设线程A开始去销毁,在A的线程函数执行完后,若已经映射的DLL中的dllmain函数中没有在DLL_PROCESS_ATTACH的代码分支中原创 2015-11-23 15:41:30 · 1453 阅读 · 0 评论