mirror of
https://github.com/love2d/love.git
synced 2026-08-16 16:20:42 +02:00
More race conditions, what fun
This commit is contained in:
@@ -251,17 +251,14 @@ namespace sdl
|
||||
|
||||
ThreadVariant *Thread::receive(const std::string & name)
|
||||
{
|
||||
lock();
|
||||
ThreadVariant *v = comm->getValue(name);
|
||||
if (v)
|
||||
v->retain();
|
||||
unlock();
|
||||
return v;
|
||||
}
|
||||
|
||||
ThreadVariant *Thread::demand(const std::string & name)
|
||||
{
|
||||
lock();
|
||||
ThreadVariant *v = comm->getValue(name);
|
||||
while (!v)
|
||||
{
|
||||
@@ -271,22 +268,19 @@ namespace sdl
|
||||
v = comm->getValue(name);
|
||||
}
|
||||
v->retain();
|
||||
unlock();
|
||||
return v;
|
||||
}
|
||||
|
||||
void Thread::clear(const std::string & name)
|
||||
{
|
||||
lock();
|
||||
comm->clearValue(name);
|
||||
unlock();
|
||||
}
|
||||
|
||||
void Thread::send(const std::string & name, ThreadVariant *v)
|
||||
{
|
||||
lock();
|
||||
comm->setValue(name, v);
|
||||
unlock();
|
||||
lock(); //this function explicitly locks
|
||||
comm->setValue(name, v); //because we need
|
||||
unlock(); //it to unlock here for the cond
|
||||
SDL_CondBroadcast(cond);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user