sync_client.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef SYNC_CLIENT_H
  2. #define SYNC_CLIENT_H
  3. #include "fixed_types.h"
  4. #include "subsecond_time.h"
  5. #include "sync_api.h"
  6. class Thread;
  7. class SyncServer;
  8. class SyncClient
  9. {
  10. public:
  11. SyncClient(Thread*);
  12. ~SyncClient();
  13. void mutexInit(carbon_mutex_t *mux);
  14. SubsecondTime mutexLock(carbon_mutex_t *mux, SubsecondTime delay = SubsecondTime::Zero());
  15. std::pair<SubsecondTime, bool> mutexTrylock(carbon_mutex_t *mux);
  16. SubsecondTime mutexUnlock(carbon_mutex_t *mux, SubsecondTime delay = SubsecondTime::Zero());
  17. void condInit(carbon_cond_t *cond);
  18. SubsecondTime condWait(carbon_cond_t *cond, carbon_mutex_t *mux);
  19. SubsecondTime condSignal(carbon_cond_t *cond);
  20. SubsecondTime condBroadcast(carbon_cond_t *cond);
  21. void barrierInit(carbon_barrier_t *barrier, UInt32 count);
  22. SubsecondTime barrierWait(carbon_barrier_t *barrier);
  23. private:
  24. Thread *m_thread;
  25. SyncServer *m_server;
  26. std::pair<SubsecondTime, bool> __mutexLock(carbon_mutex_t *mux, bool tryLock, SubsecondTime delay = SubsecondTime::Zero());
  27. };
  28. #endif