|
@@ -125,13 +125,11 @@ void Channel::supply(Variant *var)
|
|
if (!var)
|
|
if (!var)
|
|
return;
|
|
return;
|
|
|
|
|
|
- mutex->lock();
|
|
|
|
|
|
+ Lock l(mutex);
|
|
unsigned long id = push(var);
|
|
unsigned long id = push(var);
|
|
|
|
|
|
while (!past(id, received))
|
|
while (!past(id, received))
|
|
cond->wait(mutex);
|
|
cond->wait(mutex);
|
|
-
|
|
|
|
- mutex->unlock();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
Variant *Channel::pop()
|
|
Variant *Channel::pop()
|
|
@@ -157,11 +155,10 @@ Variant *Channel::pop()
|
|
Variant *Channel::demand()
|
|
Variant *Channel::demand()
|
|
{
|
|
{
|
|
Variant *var;
|
|
Variant *var;
|
|
- mutex->lock();
|
|
|
|
|
|
+ Lock l(mutex);
|
|
while (!(var = pop()))
|
|
while (!(var = pop()))
|
|
cond->wait(mutex);
|
|
cond->wait(mutex);
|
|
|
|
|
|
- mutex->unlock();
|
|
|
|
return var;
|
|
return var;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -218,24 +215,20 @@ void Channel::unlockMutex()
|
|
|
|
|
|
void Channel::retain()
|
|
void Channel::retain()
|
|
{
|
|
{
|
|
|
|
+ EmptyLock l;
|
|
if (named)
|
|
if (named)
|
|
- namedChannelMutex->lock();
|
|
|
|
|
|
+ l.setLock(namedChannelMutex);
|
|
|
|
|
|
Object::retain();
|
|
Object::retain();
|
|
-
|
|
|
|
- if (named)
|
|
|
|
- namedChannelMutex->unlock();
|
|
|
|
}
|
|
}
|
|
|
|
|
|
void Channel::release()
|
|
void Channel::release()
|
|
{
|
|
{
|
|
|
|
+ EmptyLock l;
|
|
if (named)
|
|
if (named)
|
|
- namedChannelMutex->lock();
|
|
|
|
|
|
+ l.setLock(namedChannelMutex);
|
|
|
|
|
|
Object::release();
|
|
Object::release();
|
|
-
|
|
|
|
- if (named)
|
|
|
|
- namedChannelMutex->unlock();
|
|
|
|
}
|
|
}
|
|
} // thread
|
|
} // thread
|
|
} // love
|
|
} // love
|