摘要: 1 可等待计时器 2 可等待计时器是这样一种内核对象,他们会在某个指定的时间触发或每隔一段时间触发一次。 5 下面我们来介绍一下创建可等待计时器函数: 6 7 HANDLE CreateWaitableTimer( 8 LPSECURITY_ATTR... 阅读全文
posted @ 2014-08-16 11:08 风走了,雨停了 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 3 信号量内核对象 4 信号量与其它内核量相同,包含一个使用计数,除此之外还包含两个量。 5 一个最大资源计数和一个当前资源计数。 6 信号量规则如下: 7 如果当前资源计数大于0,那么信号量处于触发状态。 8 如果当前资源计... 阅读全文
posted @ 2014-08-16 11:06 风走了,雨停了 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 1 事件内核对象 2 3 事件类型对象有两种不同类型,手动重置和自动重置 4 手动重置:当一个手动重置对象被触发时候,等待该对象的所有线程变为可调度。 5 自动重置:当一个自动重置对象被触发时,只有一个等待该事件的线程会变为可调度 6 7 下面是一个创建事件内核对象的函数: 8... 阅读全文
posted @ 2014-08-16 11:05 风走了,雨停了 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 1 对于内核对象实现线程同步,不得不提三点: 2 1)大多数内核对象既有触发也有未触发两个状态 3 比如:进程、线程、作业、文件流、事件、可等待的计时器、信号量、互斥量 4 2)等待函数:等待函数使线程自愿进入等待状态,直到指定的内核对象变为触发状态为止, 5 说道等待我们最喜欢不过了,... 阅读全文
posted @ 2014-08-16 11:03 风走了,雨停了 阅读(385) 评论(0) 推荐(0) 编辑
摘要: 1 //Slim读/写锁实现线程同步 2 SRWlock 的目的和关键段相同:对同一资源进行保护,不让其它线程访问。 3 但是,与关键段不同的是,SRWlock允许我们区分哪些想要读取资源的线程(读取者线程) 4 和哪些想要更新资源值的线程(写入者线程)。让所有读取者资源在同一时刻访问共享... 阅读全文
posted @ 2014-08-16 11:01 风走了,雨停了 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 1 //2.使用关键段实现线程同步 2 使用时必须有以下几个步骤 3 //(1)必须先定义 CRITICAL_SECTION 结构 4 CRITICAL_SECTION g_cs; 5 //(2)初始化关键段 CRITICAL_SECTION 6 InitializeCritical... 阅读全文
posted @ 2014-08-16 11:00 风走了,雨停了 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 1 线程同步分为用户模式下的线程同步和内核对象的线程同步。 2 3 当然用户模式下的线程同步实现速度比内核模式下快,但是功能也有局 4 5 6 7 8 //1.利用原子访问: Interlocked系列函数,关于Interlocked系列函数,我需要知道的是他们,执行... 阅读全文
posted @ 2014-08-16 10:57 风走了,雨停了 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 1 //首先介绍widows创建线程的两个函数 2 //创建线程函数 3 4 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, 5 SIZE_T dwStackSize, 6 LPT... 阅读全文
posted @ 2014-08-16 10:40 风走了,雨停了 阅读(175) 评论(0) 推荐(0) 编辑