mirror of
https://github.com/love2d/love.git
synced 2026-08-15 15:51:12 +02:00
Make Channels more thread-safe (I know, I know..)
--HG-- branch : minor
This commit is contained in:
@@ -65,10 +65,7 @@ namespace thread
|
||||
delete mutex;
|
||||
delete cond;
|
||||
if (named)
|
||||
{
|
||||
Lock l(namedChannelMutex);
|
||||
namedChannels.erase(name);
|
||||
}
|
||||
}
|
||||
|
||||
void Channel::push(Variant *var)
|
||||
@@ -133,6 +130,11 @@ namespace thread
|
||||
void Channel::clear()
|
||||
{
|
||||
Lock l(mutex);
|
||||
|
||||
// We're already empty.
|
||||
if (queue.empty())
|
||||
return;
|
||||
|
||||
while (!queue.empty())
|
||||
{
|
||||
queue.front()->release();
|
||||
@@ -144,5 +146,16 @@ namespace thread
|
||||
if (named)
|
||||
release();
|
||||
}
|
||||
|
||||
void Channel::release()
|
||||
{
|
||||
if (named)
|
||||
namedChannelMutex->lock();
|
||||
|
||||
Object::release();
|
||||
|
||||
if (named)
|
||||
namedChannelMutex->unlock();
|
||||
}
|
||||
} // thread
|
||||
} // love
|
||||
|
||||
Reference in New Issue
Block a user