ACE_Guard提供了自动锁定、释放机制的同步锁,对可见的scope范围内进行自动加锁,当超出scope范围是程序自动卸锁。Guard需要与一个ACE_LOCK的类作为模板,本例中采用了ACE_Thread_Mutex实现,见代码。 #include "stdafx.h" #include "ace/ace.h" #include "ace/Thread.h" #include "ace/Synch.h" #include "ace/Log_Msg.h" ACE_Thread_Mutex tmMutex; int g_nCounter; //子线程处理函数,在此函数中采用mutex保证每次打印三个连续的整数 //中间的输出不会被打断 static void* ChildProc(void* pParam) { //如果没有mutext,输出结果将会有很大的不同,无法保证输出的完整性! ACE_Guard<ACE_Thread_Mutex> gdSync(tmMutex); for (int i = 0; i < 3;i++) { ACE_DEBUG((LM_DEBUG,ACE_TEXT("(%t) = %d/n"),g_nCounter++)); } return NULL; } //创建的线程个数 #define NUM_THRD 100 int ACE_TMAIN(int argc, ACE_TCHAR* argv[]) { ACE_thread_t* pThreadIDs = new ACE_thread_t[NUM_THRD]; ACE_hthread_t* pHandles = new ACE_hthread_t[NUM_THRD]; //启动NUM_THRD个线程 if (ACE_Thread::spawn_n(pTh