Win API
i不歪
这个作者很懒,什么都没留下…
展开
-
_beginthread、_beginthreadEx、CreateThread之间的注意点
首先,线程句柄要通过CloseHandle关闭,但不是每个句柄都需要关闭,内核对象的句柄需要关闭。关于内核对象的介绍参考:http://www.cppblog.com/zwp/archive/2008/12/27/70525.html介绍_beginthread、_beginthreadEx、CreateThread之间的关系参见一下内容:http://blog.csdn.net/原创 2011-11-29 21:07:01 · 1170 阅读 · 0 评论 -
ShowWindows显示不出窗口原因
Process instance; // 不用 instance.MainWindowHandle 窗口句柄是因为,当窗口最小化时其值为 0,进而找不到窗口 ShowWindowAsync(FindWindow("窗口类名", "窗口标题"), SW_SHOWNORMAL); SetForegroundWindow(in原创 2011-06-30 22:25:00 · 2729 阅读 · 0 评论 -
Win API 互斥体
互斥体是一种常用的同步对象,互斥体可以避免多个线程争夺同一个资源。例如,多线程环境中,只能有一个线程占有互斥体。获得互斥体的线程如果不释放互斥体,其他线程永远不会获得这个互斥体。互斥体的概念类似于同步事件,所不同的是同一个线程可以递归获得互斥体。递归获得互斥体的意思是,得到互斥体的线程还可以再次获得这个互斥体,或者说互斥体对于已经获得互斥体的线程不产生“互斥”关系。而同步事件不能递归获取。互斥原创 2011-11-29 22:15:11 · 1314 阅读 · 0 评论 -
使用互斥体同步线程
#include #include // _beginthread, _endthread#include /* * 可以理解信号灯内部有N个灯泡。 * 如果有一个灯泡亮着,就代表信号灯处于激发状态,如果全灭,则代表信号灯处于未激发状态。 */// 创建线程 1UINT WINAPI Thread1(LPVOID para){ HANDLE* phMutex = (HAN原创 2011-11-29 22:53:12 · 1289 阅读 · 0 评论 -
使用信号灯同步线程
#include #include // _beginthread, _endthread#include /* * 可以理解信号灯内部有N个灯泡。 * 如果有一个灯泡亮着,就代表信号灯处于激发状态,如果全灭,则代表信号灯处于未激发状态。 */// 创建线程UINT WINAPI Thread1(LPVOID para){ printf("进入Thread1......\原创 2011-11-29 21:52:03 · 774 阅读 · 0 评论 -
主线程等待子线程完成
#include #include // _beginthread, _endthread#include // 创建线程UINT WINAPI Thread(LPVOID para){ printf("进入Thread......\n"); // 等待5秒 Sleep(5000); printf("离开Thread......\n"); return 0;}int原创 2011-11-29 23:08:38 · 1218 阅读 · 0 评论 -
使用事件同步线程
#include #include // _beginthread, _endthread#include // 创建线程UINT WINAPI Thread1(LPVOID para){ printf("进入Thread1......\n"); HANDLE* phEvent = (HANDLE*)para; // 设置该事件激发 SetEvent(*phEvent);原创 2011-11-29 21:13:27 · 524 阅读 · 0 评论