随笔分类 -  windows

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