osxsemaphorepeer.cpp

来自「这是VCF框架的代码」· C++ 代码 · 共 84 行

CPP
84
字号
//OSXSemaphorePeer.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/ThreadException.h"using namespace VCF;OSXSemaphore::OSXSemaphore( long initialCount, long maxCount ):    semaphoreID_(NULL){    MPLibraryIsLoaded();    OSStatus err = MPCreateSemaphore( maxCount, initialCount, &semaphoreID_ );    if ( (err != noErr) || (kInvalidID == semaphoreID_) ) {        throw ThreadException( MAKE_ERROR_MSG_2("MPCreateSemaphore failed or returned an invalid semaphore id") );    }}OSXSemaphore::~OSXSemaphore(){    OSStatus err = MPDeleteSemaphore( semaphoreID_ );    VCF_ASSERT2( err == noErr, "MPDeleteSemaphore failed" );}bool OSXSemaphore::lock( uint32 timeoutInMilliseconds ){	Duration timeout = kDurationMillisecond * timeoutInMilliseconds;    	OSStatus err = MPWaitOnSemaphore( semaphoreID_, timeout );    return (err == noErr) ? true : false;}bool OSXSemaphore::lock(){    OSStatus err = MPWaitOnSemaphore( semaphoreID_, kDurationForever );    return (err == noErr) ? true : false;}bool OSXSemaphore::unlock(){    OSStatus err = MPSignalSemaphore( semaphoreID_ );    return (err == noErr) ? true : false;}/***CVS Log info*$Log$*Revision 1.3  2005/07/09 23:15:04  ddiego*merging in changes from devmain-0-6-7 branch.**Revision 1.2.4.1  2005/05/08 19:55:32  ddiego*osx updates, not yet functional.**Revision 1.2  2004/08/07 02:49:14  ddiego*merged in the devmain-0-6-5 branch to stable**Revision 1.1.2.6  2004/06/06 07:05:32  marcelloptr*changed macros, text reformatting, copyright sections**Revision 1.1.2.4  2004/05/03 03:44:53  ddiego*This checks in a bunch of changes to the FoundationKit for OSX*porting. The thread, mutex, semaphor, condition, and file peers*have all been implemented and tested. The file peer could be improved*and needs search functionality. The locale peer is only partially*complete, but the functions will return values. The unicode transition*is also finished and works OK now.**/

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?