- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxsync.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2012 Autodesk, Inc.
    00004    All rights reserved.
    00005
    00006    Use of this software is subject to the terms of the Autodesk license agreement
    00007    provided at the time of installation or download, or which otherwise accompanies
    00008    this software in either electronic or hard copy form.
    00009
    00010 ****************************************************************************************/
    00011
    00013 #ifndef _FBXSDK_CORE_SYNC_H_
    00014 #define _FBXSDK_CORE_SYNC_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/core/sync/fbxclock.h>
    00019 #include <fbxsdk/core/sync/fbxthread.h>
    00020
    00021 #include <fbxsdk/fbxsdk_nsbegin.h>
    00022
    00023 class FbxMutexImpl;
    00024 class FbxSemaphoreImpl;
    00025 class FbxGateImpl;
    00026
    00036 class FBXSDK_DLL FbxSpinLock
    00037 {
    00038 public:
    00039     FbxSpinLock();
    00040
    00042     void Acquire();
    00043
    00045     void Release();
    00046
    00047 private:
    00048     FbxAtomic mSpinLock;
    00049 };
    00050
    00057 class FBXSDK_DLL FbxMutex
    00058 {
    00059 public:
    00064     FbxMutex(bool pInitialOwnership=false);
    00065     virtual ~FbxMutex();
    00066
    00070     void Acquire();
    00071
    00077     bool TryAcquire(unsigned int pRetryCount);
    00078
    00083     void Release();
    00084
    00085 private:
    00086     FbxMutexImpl* mImpl;
    00087 };
    00088
    00094 class FBXSDK_DLL FbxSemaphore
    00095 {
    00096 public:
    00097     FbxSemaphore();
    00098     virtual ~FbxSemaphore();
    00099
    00105     bool Wait(unsigned int pCount=1);
    00106
    00111     bool Signal(unsigned int pCount=1);
    00112
    00113 private:
    00114     FbxSemaphoreImpl* mImpl;
    00115 };
    00116
    00121 class FBXSDK_DLL FbxGate
    00122 {
    00123 public:
    00124     FbxGate();
    00125     virtual ~FbxGate();
    00126
    00130     void Open();
    00131
    00133     void Close();
    00134
    00138     bool IsOpen();
    00139
    00144     bool Wait();
    00145
    00146 private:
    00147     FbxGateImpl* mImpl;
    00148 };
    00149
    00152 class FBXSDK_DLL FbxSyncStack
    00153 {
    00154 public:
    00156     struct Item
    00157     {
    00158         Item* mNext;
    00159         inline Item(){ mNext = NULL; }
    00160         inline Item* Set(Item* pNext){ return mNext = pNext; }
    00161         inline Item* Next(){ return mNext; }
    00162     };
    00163
    00165     FbxSyncStack();
    00166
    00170     void Push(Item* pItem);
    00171
    00175     Item* Pop();
    00176
    00177 private:
    00178     FbxSpinLock mLock;
    00179     Item*       mTop;
    00180 };
    00181
    00182 #include <fbxsdk/fbxsdk_nsend.h>
    00183
    00184 #endif /* _FBXSDK_CORE_SYNC_H_ */