
windows编程
winsunxu
逆水行舟,不进则退
展开
-
互斥运行一个程序实例
<br />在WIN32下,实现程序互斥运行的方法有很多种,我简单分析以下几种不同的实现:<br />一、在VC下的实现<br />Visual C++ 是WIN32编程最主要也是最强大的编程工具这一,引用一名话来说VC就是“只有你想不到的,没有VC做不到的”。废话少说,下面看看用VC是如何这个功能。<br />A. 使用编译器来实现(使用MFC框架):<br />在.cpp文件开头加上以下几行: #pragma data_seg("Shared") int volatile g_lAppIns转载 2011-03-03 12:42:00 · 2325 阅读 · 0 评论 -
模块中分配和释放堆的问题
<br />造成失败的原因是分配和释放内存不是由相同的堆管理程序完成的,例如动态链接库中的堆在默认情况下是由msvcrt.dll中的堆管理程序管理的 (以动态链接的方式),而exe程序的堆在默认情况下是由程序自己的代码管理(以静态链接的方式),由于它们的堆管理程序不同,当动态链接库分配的内存在 exe程序中释放时就会出错,因为exe程序所在的堆并没有分配这块内存,而你却要求它释放这块内存。<br />解决方法:将程序中所有的模块都链接到C/C++运行期库Multithreaded DLL,修改后所有分配和释转载 2011-03-03 13:27:00 · 1486 阅读 · 0 评论 -
Windows下Critical Section、Event、Mutex、Semaphores区别
<br />临界区(Critical Section)<br /> 保证在某一时刻只有一个线程能访问数据的简便办法。在任意时刻只允许一个线程对共享资源进行访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入后其他所有试图访问此临界区的线程将被挂起,并一直持续到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到用原子方式操作共享资源的目的。<br /> <br /> 临界区包含两个操作原语: EnterCriticalSection() 进入临界区 LeaveCr转载 2011-03-03 15:28:00 · 740 阅读 · 0 评论