win32threadmanagerpeer.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 116 行
CPP
116 行
//Win32ThreadManagerPeer.cpp/*Copyright 2000-2004 The VCF Project.Please see License.txt in the top level directorywhere you installed the VCF.*/#include "vcf/FoundationKit/FoundationKit.h"#include "vcf/FoundationKit/FoundationKitPrivate.h"#include "vcf/FoundationKit/Win32ThreadManagerPeer.h"using namespace VCF;Win32ThreadManagerPeer::Win32ThreadManagerPeer(){}Win32ThreadManagerPeer::~Win32ThreadManagerPeer(){}Waitable::WaitResult Win32ThreadManagerPeer::wait( std::vector<Waitable*>& waitObjects, std::vector<Waitable*>& signaledObjects ){ Waitable::WaitResult result = Waitable::wrWaitFailed; VCF_ASSERT( !waitObjects.empty() ); signaledObjects.clear(); HANDLE* handles = new HANDLE[ waitObjects.size() ]; for ( int i=0;i<waitObjects.size();i++ ) { handles[i] = waitObjects[i]->getPeerHandleID(); } DWORD res = WaitForMultipleObjects( waitObjects.size(), handles, FALSE, INFINITE ); switch ( res ) { case WAIT_TIMEOUT : { result = Waitable::wrTimedOut; } break; case WAIT_FAILED : { result = Waitable::wrWaitFailed; } break; default : { if ( (res >= WAIT_OBJECT_0) && (res < WAIT_OBJECT_0+waitObjects.size()) ) { signaledObjects.push_back( waitObjects[res-WAIT_OBJECT_0] ); } } break; } delete [] handles; return result;}Waitable::WaitResult Win32ThreadManagerPeer::wait( std::vector<Waitable*>& waitObjects, std::vector<Waitable*>& signaledObjects, uint32 timeoutInMilliseconds ){ Waitable::WaitResult result = Waitable::wrWaitFailed; VCF_ASSERT( !waitObjects.empty() ); signaledObjects.clear(); HANDLE* handles = new HANDLE[ waitObjects.size() ]; for ( int i=0;i<waitObjects.size();i++ ) { handles[i] = waitObjects[i]->getPeerHandleID(); } DWORD res = WaitForMultipleObjects( waitObjects.size(), handles, FALSE, timeoutInMilliseconds ); switch ( res ) { case WAIT_TIMEOUT : { result = Waitable::wrTimedOut; } break; case WAIT_FAILED : { result = Waitable::wrWaitFailed; } break; default : { if ( (res >= WAIT_OBJECT_0) && (res < WAIT_OBJECT_0+waitObjects.size()) ) { signaledObjects.push_back( waitObjects[res-WAIT_OBJECT_0] ); } } break; } delete [] handles; return result;}uint32 Win32ThreadManagerPeer::getCurrentThreadID(){ return GetCurrentThreadId();}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?