摘要: 驱动程序代码 #pragma once #define IO_CONTROL_TRANSMIT_EVENT CTL_CODE(FILE_DEVICE_UNKNOWN,0x8080,METHOD_BUFFERED,FILE_ANY_ACCESS) typedef struct _DEVICE_EXTE 阅读全文
posted @ 2020-02-23 18:49 AGB 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 互斥+有序 线程同步是线程之间所具有的一种制约关系,一个线程的执行依赖另一个线程的消息,当它没有得到另一个线程的消息时应该等待,知道消息到达时才被唤醒 阅读全文
posted @ 2020-02-23 17:08 AGB 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 相关函数 1,CreateEvent HANDLE WINAPI CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, //表示安全控制,一般直接传入NULL,表示不能被子进程继承 BOOL bManualReset, //参数确定事件是手动置位 阅读全文
posted @ 2020-02-23 16:47 AGB 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 内核版的令牌 相关函数 HANDLE CreateMutexA( LPSECURITY_ATTRIBUTES lpMutexAttributes, BOOL bInitialOwner,//FALSE的时候,互斥体创建出来就可以用 LPCSTR lpName ); 示例代码,下面是两个程序,代表两个 阅读全文
posted @ 2020-02-23 16:09 AGB 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 多个线程有对同一个全局变量进行写的操作时,会出现线程安全问题。 1,临界区 / 临界资源 临界资源时一次只允许一个线程使用的资源。 访问临界资源的那段代码称为临界区。 临界区实现之线程锁 如图 1,创建全局变量,一个全局令牌 CRITICAL_SECTION cs;//相当于一个令牌,让线程去拿,谁 阅读全文
posted @ 2020-02-23 15:27 AGB 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 线程切换的时候,要保存当前运行状态,以便后续切换回来 CONTEXT结构体保存的是一堆寄存器 两个函数 //You cannot get a valid context for a running thread. Use the SuspendThread function to suspend t 阅读全文
posted @ 2020-02-23 14:49 AGB 阅读(402) 评论(0) 推荐(0) 编辑
摘要: 三个函数的使用 1,WaitForSingleObject #include <Windows.h> DWORD WINAPI MyThread(LPVOID lpParameter) { //ziji de code } int main() { HANDLE hThread; hThread = 阅读全文
posted @ 2020-02-23 13:54 AGB 阅读(117) 评论(0) 推荐(0) 编辑
摘要: 1,线程是附属在进程上的执行实体,是代码的执行流程;2,一个进程可以包含多个线程,但一个进程至少要包含一个线程(主线程) #include <Windows.h> DWORD WINAPI MyThread(LPVOID lpParameter) { //ziji de code } int mai 阅读全文
posted @ 2020-02-23 11:40 AGB 阅读(133) 评论(0) 推荐(0) 编辑