刘收获

导航

2017年8月16日 #

读写锁 SRWLOCK

摘要: 读写锁在对资源进行保护的同时,还能区分想要读取资源值的线程(读取者线程)和想要更新资源的线程(写入者线程)。 对于读取者线程,读写锁会允许他们并发的执行。当有写入者线程在占有资源时,读写锁会让其它写入者线程和读取者线程等待。 用读写锁来解决读者写者问题会使代码非常清晰和简洁。 阅读全文

posted @ 2017-08-16 21:39 沉疴 阅读(433) 评论(0) 推荐(0) 编辑

线程优先级

摘要: 通过SetThreadPriority可以设置线程优先级别: WINBASEAPIBOOLWINAPISetThreadPriority( _In_ HANDLE hThread, //线程句柄 _In_ int nPriority //设置的权限级别 ); MSDN: Begin backgrou 阅读全文

posted @ 2017-08-16 19:43 沉疴 阅读(292) 评论(0) 推荐(0) 编辑

Lookaside

摘要: 频繁申请和回收内存,会导致在内存上产生大量的内存碎片,从而导致最终无法申请内存。DDK提供了Lookaside结构来解决这个问题。可以将Lookaside结构想象成一个内存容器。在初始的时候,它先向Windows申请了比较大的内存。以后每次申请内存的时候,不是直接向Windows申请内存,而是向Lo 阅读全文

posted @ 2017-08-16 13:34 沉疴 阅读(411) 评论(0) 推荐(1) 编辑

驱动链表(LIST_ENTRY)

摘要: DDK提供了两种链表的数据结构,双向链表和单向链表,其定义如下: typedef struct _LIST_ENTRY { struct _LIST_ENTRY *Flink; struct _LIST_ENTRY *Blink; } LIST_ENTRY,*PLIST_ENTRY; typedef 阅读全文

posted @ 2017-08-16 12:49 沉疴 阅读(1014) 评论(0) 推荐(0) 编辑

UNICODE_STRING(用户模式 内核模式)

摘要: UNICODE_STRING结构: typedef struct _UNICODE_STRING { USHORT Length; //字节长度,不包括终止符“NULL” USHORT MaximumLength; //字符串所能占的最大字节数字符串的指针 PWCH Buffer; //字符串的地址 阅读全文

posted @ 2017-08-16 10:21 沉疴 阅读(2126) 评论(0) 推荐(0) 编辑