1
0
Fork 0
mirror of https://github.com/Atmosphere-NX/Atmosphere.git synced 2024-11-08 21:21:48 +00:00
Atmosphere/mesosphere/source/core/KSynchronizationObject.cpp
2019-06-03 17:41:06 -07:00

36 lines
781 B
C++

#include <mesosphere/core/KSynchronizationObject.hpp>
#include <mesosphere/core/Result.hpp>
#include <mesosphere/threading/KScopedCriticalSection.hpp>
#include <mesosphere/threading/KThread.hpp>
#include <mutex>
namespace mesosphere
{
KSynchronizationObject::~KSynchronizationObject()
{
}
void KSynchronizationObject::NotifyWaiters()
{
KScopedCriticalSection criticalSection;
if (IsSignaled()) {
for (auto &&waiter : waiters) {
waiter->HandleSyncObjectSignaled(this);
}
}
}
KLinkedList<KThread *>::const_iterator KSynchronizationObject::AddWaiter(KThread &thread)
{
return waiters.insert(waiters.end(), &thread);
}
void KSynchronizationObject::RemoveWaiter(KLinkedList<KThread *>::const_iterator it)
{
waiters.erase(it);
}
}