临界区定义全局临界区对象CRITICAL_SECTION g_cs;初始化临界区InitializeCriticalSection(&g_cs);使用临界区同步EnterCriticalSection(&g_cs);some codeLeaveCriticalSection(&g_cs);事件定义事...
分类:
其他好文 时间:
2015-04-19 19:29:12
阅读次数:
113
并发和竞争发生在两类体系中: 对称多处理器(SMP)的多个CPU 内核可抢占的单CPU系统 访问共享资源的代码区域称为临界区(critical sections),临界区需要以某种互斥机制加以保护。在驱动程序中,当多个线程同时访问相同的资源(critical sections)时(驱动程序中的全局....
分类:
系统相关 时间:
2015-04-17 22:04:47
阅读次数:
230
在多线程代码中,多个线程可能会访问一些公共的资源(变量、方法逻辑等等),这些公共资源称为临界区(共享区);临界区的资源是不安全,所以需要通过线程同步对多个访问临界区的线程进行控制。同样,有些时候我们需要多个线程按照特定的顺序执行,这时候,我们也需要进行线程同步。下面,我们就看看C#中通过lock和M...
分类:
编程语言 时间:
2015-04-14 23:08:05
阅读次数:
145
我们前面讲过的临界区,如同一个小房间,张三进去了,李四就不能进,如果李四要进,必须等张三出来。 今天我们要讲的互斥锁,像一个物件,这个物件只能同时被一个线程持有。如此一来,便可以通过互斥锁来实现线程...
分类:
编程语言 时间:
2015-04-13 19:10:57
阅读次数:
314
临界区是线程同步的一种实现方式。Windows提供了4个关于临界区的函数(InitializeCriticalSection,EnterCriticalSection,LeaveCriticalSection,DeleteCriticalSection),要想使用这些函数,必须先有一个临界区...
分类:
编程语言 时间:
2015-04-13 16:53:21
阅读次数:
170
用到临界区 保护写日志的函数;递归函数 删除目录下的所有文件;循环创建或判断FTP的目录;可改进的地方:循环压缩深层次目录的所以文件; 实现断点续传,或断点下载; 1 {****************************************************************....
分类:
编程语言 时间:
2015-04-10 17:49:45
阅读次数:
278
前面讲了临界区可以用来达到线程同步.而事件(event)与互斥(mutex)也同样可以做到.Win32 API中的线程事件HANDLE hEvent = NULL;void MainTestFun{hEvent = CreateEvent(NULL,FALSE,FALSE,NULL);SetEven...
分类:
编程语言 时间:
2015-04-02 18:17:11
阅读次数:
156
测试代码: 1 //线程模型开始,都可以作为类的成员变量 2 HANDLE m_hLogThread; 3 CEvt m_evLogList; 4 CCriSec m_csLogList; 5 //等...
分类:
编程语言 时间:
2015-04-01 13:11:19
阅读次数:
150
总结:Win7中,CS初始化时,nLockCout为-1,RecursionCount为0; RecursionCount是own thread每调用一次Enter就递增一次,但只有第一次Enter的时候,LockCount才减1XP中,cs初始化时,nLockCout为-1,RecursionCo...
分类:
数据库 时间:
2015-03-19 21:30:40
阅读次数:
495
上来先看MSDN关于lock的叙述:lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 下面的示例包含一个 lock 语句。lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区。 如果其他线程尝试进入锁定的代码,则它将一直等待(即被阻...
分类:
其他好文 时间:
2015-03-15 09:24:20
阅读次数:
211