随笔分类 - windows
摘要:比如:多个人来取仓库物品,我们为了做到多线程的互斥,一种方法是,对每个货品加个mutex互斥锁。另种方法,对窗口(只一个)加个mutex锁,但这样的话效率都比较低。而另钟解决办法是用信号量。信号量其实是mutex的一种加强版本,如果信号量的信号值设为1则其实退化成mutex。HANDLE Creat...
阅读全文
摘要:Event是内核对象,他可以分为自动和手动两种模式。HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,LPCTSTR lpName); 参数lpEventA...
阅读全文
摘要:Mutex 用途和critical section 非常类似,不过Mutex是内核对象,速度比section慢。Mutexes可以跨进程使用。另外Mutex在等待的时候可以设置等待时间。以下是两种对象的相关函数比较:CRITICAL_SECTION Mut...
阅读全文
摘要:任何时候当一段代码需要两个(或更多)资源时,都有潜在性的死锁。void SwapLists(List *list1, List *list2) { List *tmp_list; EnterCriticalSection(list1->m_section); EnterCriticalSection...
阅读全文
摘要:所谓critical sections 意指一小块“用来处理一份被共享之资源”的程序代码。你可能必须在程序的许多地方处理这一块可共享的资源。所有这些程序代码可以被同一个critical section 保护起来。为了阻止问题发生,一次只能有一个线程获准进入critical section 中.cri...
阅读全文
摘要:#include "stdafx.h"#include #include using namespace std;DWORD WINAPI ThreadFuncFirst(LPVOID param){int iCount = 50;while(iCount--){cout<<"\nThreadFun...
阅读全文
摘要:概述 任何单个应用程序都不能完全使该处理器达到满负荷。当一个线程遇到较长等待时间事件时,同步多线程还允许另一线程中的指令使用所有执行单元。例如,当一个线程发生高速缓存不命中,另一个线程可以继续执行。同步多线程是 POWER5™ 和 POWER6™ 处理器的功能,可与共享处理器配合使用。 SMT 对于商业事务处理负载的性能优化可达30%。在更加注重系统的整体吞吐量而非单独线程的吞吐量时,SMT 是一个很好地选择。 但是并非所有的应用都能通过SMT 取得性能优化。那些性能受到执行单元限制的应用,或者那些耗尽所有处理器的内存带宽的应用,其性能都不会通过在同一个处理器上执行两个线程而得到提高。 ...
阅读全文
摘要:SRWLock的目的和关键段相同,对一个资源进行保护,构造了一段“原子访问”的代码,不让其他线程访问它。但与关键段不同的是SRWLock允许区分想要读取资源值的线程和想要写入资源值的线程,因为仅仅读取资源是不会破坏数据的,下面是Slim读/写锁的简单用法:?123456789101112131415161718192021SRWLOCK g_srwLock ... //init SRWLock InitializeSRWLock(&g_srwLock); ... //当需要写入资源的时候申请"排他锁" AcquireSRWLOckExclusive(&g_s
阅读全文
浙公网安备 33010602011771号