随笔- 182
文章- 1
评论- 28
阅读-
57万
08 2010 档案
16.2.2火车站售票系统模拟程序(CriticalSection)
摘要:#include<iostream>#include<Windows.h>using namespace std;DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);CRITICAL_SECTION CriticalSection;int tick...
阅读全文
16.1.4火车站售票系统模拟程序(Event)
摘要:#include<iostream>#include<Windows.h>using namespace std;DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);HANDLE hEvent;int tickets = 100;int main(...
阅读全文
15.4.1火车站售票系统模拟程序(Mutex)
摘要:#include <iostream>#include <Windows.h>using namespace std;int tickets = 100;HANDLE hMutex;DWORD WINAPI ThreadProc1(LPVOID lpParameter);DWORD WINAPI ThreadProc2(LPVOID lpParameter);int mai...
阅读全文
15.5 保证应用程序只有一个实例运行(Mutex)
摘要:#include <iostream>#include <Windows.h>using namespace std;int main(){ HANDLE hMutex = CreateMutex(NULL,TRUE,L"OnlyInstance"); if (hMutex) { if (ERROR_ALREADY_EXISTS == GetLastError()) { c...
阅读全文
15.3简单多线程示例
摘要:#include <iostream>#include <Windows.h>using namespace std;DWORD WINAPI ThreadProc(LPVOID lpParameter);int main(){ DWORD ThreadID; HANDLE hThread = CreateThread(NULL,0,ThreadProc,NULL,0,&a...
阅读全文
为什么有的时候Win32 Console Application新创建的子线程得不到运行
摘要:对于WIN32控制台程序:如果main线程在其一个时间片内便已经运行完成,那么,所有的资源都会被系统释放,子线程便不能得到时间片运行。所以,如果main的运行时间不足够长的话,要在main后面加上sleep,以保证子线程能够获取时间片运行。
阅读全文
多线程CreateThread函数的用法及注意事项
摘要:当使用CreateProcess调用时,系统将创建一个进程和一个主线程。CreateThread将在主线程的基础上创建一个新线程,大致做如下步骤: 1在内核对象中分配一个线程标识/句柄,可供管理,由CreateThread返回 2把线程退出码置为STILL_ACTIVE,把线程挂起计数置1 3分配context结构 4分配两页的物理存储以准备栈,保护页设置为PAGE_READWRITE,第...
阅读全文
多线程编程之二——MFC中的多线程开发
摘要:五、MFC对多线程编程的支持 MFC中有两类线程,分别称之为工作者线程和用户界面线程。二者的主要区别在于工作者线程没有消息循环,而用户界面线程有自己的消息队列和消息循环。 工作者线程没有消息机制,通常用来执行后台计算和维护任务,如冗长的计算过程,打印机的后台打印等。用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。但对于Win32的API编程而言,这...
阅读全文
DECLARE_HANDLE
摘要:好多网友会有这样的疑问,WNDCLASSA结构体中遇到的HINSTANCE到底是什么类型,它是否是某种基本数据类型呢?下面通过我的阐述你就会有一个准确的把握了!在WINDEF.H中有这样的语句DECLARE_HANDLE(HINSTANCE);,在WINNT.H中有这样的内容#ifdef STRICTtypedef void *HANDLE;#define DECLARE_HANDLE(name)...
阅读全文
多线程编程之一——问题提出
摘要:一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下: 编译并运行应用程序,单击“延时6秒”按钮,你就会发现在这6秒期间程序就象&ldq...
阅读全文