#include "condition.h"
#if defined(__WIN32__) && !defined(PTHREADS_WIN32)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
namespace embree
{
struct ConditionImplementation
{
__forceinline ConditionImplementation () {
InitializeConditionVariable(&cond);
}
__forceinline ~ConditionImplementation () {
}
__forceinline void wait(MutexSys& mutex_in) {
SleepConditionVariableCS(&cond, (LPCRITICAL_SECTION)mutex_in.mutex, INFINITE);
}
__forceinline void notify_all() {
WakeAllConditionVariable(&cond);
}
public:
CONDITION_VARIABLE cond;
};
}
#endif
#if defined(__UNIX__) || defined(PTHREADS_WIN32)
#include <pthread.h>
namespace embree
{
struct ConditionImplementation
{ … };
}
#endif
namespace embree
{
ConditionSys::ConditionSys () { … }
ConditionSys::~ConditionSys() { … }
void ConditionSys::wait(MutexSys& mutex) { … }
void ConditionSys::notify_all() { … }
}