![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
系统编程
晚霞残影邀明月
脚本丈量走过的路,测量未走的人生
展开
-
核心对象与waitforsignalobject()的事件激发
内核对象令牌对象、事件对象、文件对象、文件映射对象、进程对象、信号量对象、线程对象、互斥量对象、管道对象、进程对象、线程对象、可等待的计时器对象、线程池工厂对象等。调用CreateFileMapping创建对应于Section对象德文件映像。CreateThread()CreaeteFile()CreateFileMapping()CreateSemaphore()使用完核心对象需要...原创 2018-12-26 18:19:28 · 2995 阅读 · 0 评论 -
多线程数据同步问题
在多线程编程中线程的执行没有先后顺序,有的时候需要对数据按照一定的顺序进行执行,执行的方式有临界区(Critiacal section),互斥量(mutex),事件(event),信号量(semaphsore)等方式可以实现,但互斥量会初始化一系列资源,通常不作为数据哦同步的方式。在不行数据同步的情况下,代码和执行结果如下`:#include<Windows.h>#include...原创 2018-12-28 13:56:57 · 329 阅读 · 0 评论 -
可等待计时器与用户计时器
可等待计时器的接口原型如下:HANDLE CreateWaitableTimer(PSECURITY_ATTRIBUTES psa, BOOL bManualReset,PCTSTR pszNmae);HANDLE OpenWaitableTimer(DQORD dwDesireAccess,BOOL bInheritHandle,PCTSTR pszName);BOOL SetWaitab...原创 2018-12-28 16:33:55 · 258 阅读 · 0 评论 -
创建线程使用_beginthreadex()而不使用CreateThread()的原因?
当一个线程调用一个需要_tiddata结构的C/C++ 运行库函数时,C/C++ 运行库函数尝试取得线程数据块的地址,如果未NULL作为_tiddata数据块的地址返回时,表明主调线程没有与之关联的_tdidata数据快。这个时候C/C++运行库会为主调线程分配并初始化一个_tiddata数据块。这个数据快会线程关联,当线程销毁时,ExitThread函数不会调用该数据块的析构函数,导致内存泄漏。...原创 2018-12-24 19:16:40 · 359 阅读 · 2 评论 -
进程-从创建到销毁
进程即运行程序的实例,当程序运行时进入口点函数会执行下面的操作。执行exe()函数时执行相应的操作。应用程序类型和相应的入口点函数处理ANSI字符和字符串的GUI应用程序:_tMain(WinMain)可执行文件的启动函数:WinMainCRTStartup处理Unicode字符和字符串的GUI应用程序:_tWinMain(wWinMain)可执行文件的启动函数:wWinMainCR...原创 2019-01-04 21:39:06 · 676 阅读 · 0 评论 -
线程池-创建到销毁
创建线程池Windows提供了一个线程池机制来简化线程池的创建、销毁以及日常管理。调用线程池函数时,系统会为进程创建相应的内核资源,其中一些内核资源在进程终止之前都将一直存在。线程池的开销取决于用法:系统会以进程的名义来分配线程、其他内核对象以及内部数据结构。创建一个新的线程池需调用函数:PTP_POOL CreateThreadpool(PVOID reserved);其中reserv...原创 2019-01-05 10:56:15 · 3903 阅读 · 0 评论 -
根据进程名字获取进程信息并进行操作
获取进程快照HANDLE WINAPI CreateToolhelp32Snapshot( DWORD dwFlags, DWORD th32ProcessID);dwFlags表示#define TH32CS_SNAPHEAPLIST 0x00000001#define TH32CS_SNAPPROCESS 0x00000002#define TH32CS_SNAPTHREAD ...原创 2019-01-05 17:12:44 · 435 阅读 · 0 评论 -
进程间通信机制
进程进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。创建进程apiWINBASEAPIBOOLWINAPICreateProcessA( _In_opt_ LPCSTR lpApplicationName, _Inout_opt_ LPSTR lpComman...原创 2019-03-14 21:39:41 · 306 阅读 · 0 评论