用C++实现多线程Mutex锁(Win32)

2014-11-24 13:57:53 · 作者: · 浏览: 3

准备知识:1,内核对象互斥体(Mutex)的工作机理,WaitForSingleObject函数的用法,这些可以从MSDN获取详情; 2,当两个或更多线程需要同时访问一个共享资源时,系统需要使用同步机制来确保一次只有一个线程使用该资源。Mutex 是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。


下边是我参考开源项目C++ Sockets的代码,写的线程锁类Lock.h


Lock.h


Lock.cpp


下边是测试代码


用VC2005编译,启动程序,下边是截图




如果将测线程函数中的代码注视掉,重新编译代码,运行


则结果见下图




由此可见,通过使用Mutex的封装类,即可达到多线程同步的目的。因Mutex属于内核对象,所以在进行多线程同步时速度会比较慢,但是用互斥对象可以在不同进程的多个线程之间进行同步。