摘要: (一)分类: 1、不创建工作项的方式 2、通过创建一个工作项的方式(二)不创建工作项的方式 步骤: 1、写一个类似void NTAPI SimpleCallback(PTP_CALLBACK_INSTANCE pInstance,PVOID pvContext),名字可以自己写 2、TrySubmitThreadpoolCallback,通过这个函数,将一个工作项添加到线程池的队列中。 代码:#include #include using namespace std;void NTAPI SimpleCallback(PTP_CALLBACK_INSTANCE pInsta... 阅读全文
posted @ 2013-09-26 09:19 Fly Hawk 阅读(1024) 评论(0) 推荐(0) 编辑
摘要: Win7下编译STLport 5.2.1 与 boost_1_54_0的方法(一)编译STLport: 1、打开VS2010的 “Visual Studio Command Prompt (2010)” 工具 2、进入到STLport的解压目录,而且在该目录下可以看到“configure.bat” 3、cd 进入STLport目录下 4、输入 “configure msvc9” 5、输入 “cd build/lib” 6、输入 “nmake clean install” 7、可以将“../build/lib"目录下的obj目录删除。 可能出现错误如: error C208... 阅读全文
posted @ 2013-09-25 16:01 Fly Hawk 阅读(470) 评论(0) 推荐(0) 编辑
摘要: (一)分类: (一)当到达某一个时间后,才继续线程的执行。 (二)当到达某一个时间后,调用某一个函数,而且间隔多少时间后,再次调用。(二)针对第一种情况的步骤: 1、CreateWaitableTimer,创建可等待的内核对象 2、SetWaitableTimer,设置间隔时间、启动时间、APC(asynchronous procedure call)函数、APC参数、是否可以唤醒电脑。 3、WaitForSingleObject,等待时间到了,触发对象。 4、然后接着执行你的操作 对第一种情况的理解: 当执行到某一种时间,才让这个线程继续执行。 代码: ... 阅读全文
posted @ 2013-09-25 11:17 Fly Hawk 阅读(384) 评论(0) 推荐(0) 编辑
摘要: (一)1、CreateThread是系统创建线程的接口,而AfxBeginThread,_beginthread, _beginthreadex,而只是为了程序的要求,而做的封装与拓展。2、在MFC中,最好用AfxBeginThread来创建,因为它返回的是CWinThread类,这个类可以用来响应消息,于是它既可以做工作线程,也可以做界面线程,所以,AfxBeginThread是MFC中最好的选择。3、_beginthreadex是对_beginthread的扩展,并且对_beginthread中存在的bug进行修复。4、_beginthreadex相对于CreateThread增加了: . 阅读全文
posted @ 2013-09-25 09:31 Fly Hawk 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 1、该结构体,用来设置读写操作的超时时间。 typedef struct _COMMTIMEOUTS { DWORD ReadIntervalTimeout; DWORD ReadTotalTimeoutMultiplier; DWORD ReadTotalTimeoutConstant; DWORD WriteTotalTimeoutMultiplier; DWORD WriteTotalTimeoutConstant; } COMMTIMEOUTS, *LPCOMMTIMEOUTS;2、 ReadIntervalTimeout:要去读下一个字符的时候... 阅读全文
posted @ 2013-09-25 08:57 Fly Hawk 阅读(1025) 评论(0) 推荐(0) 编辑
摘要: 步骤: 1、CreateFile,打开串口 示例:g_hCOM = CreateFile(L"COM3", GENERIC_READ| GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL); //必须用0,表示以独占的模式来占用串口 //打开除文件之外的设备时,用 OPEN_EXISTING 2、SetupComm,用来设置缓存大小 3、SetCommTimeouts,设置读写的超时时间 4、SetCommState,用来设置一些串口参数,如波特率,读取的字节数,是否奇偶检验。 5、WriteFi 阅读全文
posted @ 2013-09-25 08:21 Fly Hawk 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 步骤: 1、CreateIoCompletionPort,创建一个I/O完成端口 2、创建或者打开一个设备,CreateFile,一定要注意它的参数 3、CreateIoCompletionPort,再次使用这个函数,将一个设备加入到I/O完成端口。 4、创建一个线程,并为这个线程需要用到数据时,就在这个前面加个GetQueuedCompletionStatus,这个函数就相当于WaitForSingleObject这个函数,当任务完成时,获得执行权。对I/O完成端口的个人理解: 1、其实I/O完成端口就相当于可提醒内核对象。 2、I/O完成端口多用来处理异步操作代码:#inclu... 阅读全文
posted @ 2013-09-24 13:55 Fly Hawk 阅读(358) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7577591代码:#include #include #include using namespace std;CRITICAL_SECTION g_cs;HANDLE g_hPoolEmpty, g_hPoolFull;int g_nNumProduct;//表示缓存区的产品数量UINT WINAPI Product(PVOID pNum){ WaitForSingleObject(g_hPoolEmpty, INFINITE); //当获得信号量时,信号量的计数减1,表示有一个线程使 阅读全文
posted @ 2013-09-23 20:04 Fly Hawk 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7481609步骤: 1、CreateSemaphore,创建信号量 2、WaitForSingleObject,获得信号量,使信息量减少 3、ReleaseSemaphore,增加当前信号量的资源计数,表示有多少个线程正在运行,使信号量增加。对信号量的个人理解: 1、用来计数 2、用来同步 3、将ReleaseSemaphore放在一个线程的开头 4、信号量与事件内核对象有相同的同步功能 5、由此可以更能加深对互斥量的认识,它能够解决“遗弃”问题,说明了互斥量的强大。代码... 阅读全文
posted @ 2013-09-23 14:49 Fly Hawk 阅读(783) 评论(0) 推荐(1) 编辑
摘要: 转载自:http://blog.csdn.net/morewindows/article/details/7470936步骤: 1、CreateMutex,创建互斥量 2、用WaitForSingleObject,获得互斥量 3、ReleaseMutex,当用完互斥量后,就释放。其实就是将其内核记录的线程ID变为0对互斥量的个人理解: 1、互斥量与临界区的功能是一样的。 2、互斥量是一个内核对象,因为是一个内核对象,所以能被更多的线程、进程所共享 3、互斥量能够很好地处理“遗弃”问题,避免让其它线程、进程,进入“忙等”状态。 4、临界区只是一个用户模式下的同步对象。 5、互斥量... 阅读全文
posted @ 2013-09-23 14:08 Fly Hawk 阅读(349) 评论(0) 推荐(1) 编辑