condition.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // ======================================================================== //
  2. // Copyright 2009-2017 Intel Corporation //
  3. // //
  4. // Licensed under the Apache License, Version 2.0 (the "License"); //
  5. // you may not use this file except in compliance with the License. //
  6. // You may obtain a copy of the License at //
  7. // //
  8. // http://www.apache.org/licenses/LICENSE-2.0 //
  9. // //
  10. // Unless required by applicable law or agreed to in writing, software //
  11. // distributed under the License is distributed on an "AS IS" BASIS, //
  12. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. //
  13. // See the License for the specific language governing permissions and //
  14. // limitations under the License. //
  15. // ======================================================================== //
  16. #pragma once
  17. #include "mutex.h"
  18. namespace embree
  19. {
  20. class ConditionSys
  21. {
  22. public:
  23. ConditionSys();
  24. ~ConditionSys();
  25. void wait( class MutexSys& mutex );
  26. void notify_all();
  27. template<typename Predicate>
  28. __forceinline void wait( class MutexSys& mutex, const Predicate& pred )
  29. {
  30. while (!pred()) wait(mutex);
  31. }
  32. private:
  33. ConditionSys (const ConditionSys& other) DELETED; // do not implement
  34. ConditionSys& operator= (const ConditionSys& other) DELETED; // do not implement
  35. protected:
  36. void* cond;
  37. };
  38. }