condition_variable_windows.cpp #2

  • //
  • guest/
  • ShadauxCat/
  • Sprawl/
  • Mainline/
  • threading/
  • condition_variable_windows.cpp
  • View
  • Commits
  • Open Download .zip Download (1 KB)
#include "condition_variable.hpp"
#include "../time/time.hpp"

sprawl::threading::ConditionVariable::ConditionVariable()
	: m_conditionVariable()
{
	InitializeConditionVariable(&m_conditionVariable);
}

sprawl::threading::ConditionVariable::~ConditionVariable()
{
	//
}

void sprawl::threading::ConditionVariable::Wait(SharedLock& lock)
{
	SleepConditionVariableSRW(&m_conditionVariable, &lock.GetMutex()->GetNativeMutex(), INFINITE, 0);
}

void sprawl::threading::ConditionVariable::WaitFor(SharedLock& lock, int64_t nanoseconds)
{
	SleepConditionVariableSRW(&m_conditionVariable, &lock.GetMutex()->GetNativeMutex(), time::Convert(nanoseconds, time::Resolution::Nanoseconds, time::Resolution::Milliseconds), 0);
}

void sprawl::threading::ConditionVariable::WaitUntil(SharedLock& lock, int64_t nanosecondTimestamp)
{
	WaitFor(lock, nanosecondTimestamp - time::Now(time::Resolution::Nanoseconds));
}

void sprawl::threading::ConditionVariable::Notify()
{
	WakeConditionVariable(&m_conditionVariable);
}

void sprawl::threading::ConditionVariable::NotifyAll()
{
	WakeAllConditionVariable(&m_conditionVariable);
}
# Change User Description Committed
#2 16225 ShadauxCat - Renamed OpaquePtr to OpaqueType, which is more correct as it isn't a pointer.
- Added alignment restriction to OpaqueType
- Changed Mutex implementation on Windows to use faster SRWLOCK instead of CRITICAL_SECTION (cannot mirror this change on Linux because pthread_cond_wait can't accept a pthread_rwlock_t)

#review-16226
#1 12508 ShadauxCat -Added threading library.
Currently only functional for Linux; Windows will fail to link. (I will fix this soon.)
-Fixed missing move and copy constructors in List and ForwardList
-Fixed broken move constructor in HashMap
-Fixed missing const get() in HashMap
-Fixed broken operator-> in ListIterator
-Added sprawl::noncopyable
-Added sketch headers for filesystem library
-Made StringLiteral hashable, added special hashes for pointers and integers in murmur3
-Fixed compiler warning in async_network
-Updated memory allocators to use new threading library for mutexes
-Added accessibility to sprawl::StringLiteral to be able toa ccess its pointer and length and perform pointer comparisons

#review-12504