处理锁的释放

hdrplus
Matthew 7 months ago
parent cd220aa256
commit 39493ec75b

@ -202,12 +202,14 @@ size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/)
{
ts = time(NULL) + delayedCloseTime;
}
size_t ref = 0;
std::vector<ITEM>::iterator it;
m_locker.lock();
for (it = m_items.begin(); it != m_items.end(); ++it)
{
if (it->cmd == cmd)
{
ref = it->references;
it->closeCmds++;
if (ts > it->closeTime)
{
@ -217,6 +219,7 @@ size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/)
}
}
m_locker.unlock();
m_semaphore.release();
return 0;
}
@ -247,7 +250,9 @@ size_t GpioControl::TurnOff(const std::vector<int>& cmds, uint32_t delayedCloseT
}
}
}
m_locker.unlock();
m_semaphore.release();
return 0;
}
@ -277,6 +282,8 @@ size_t GpioControl::TurnOff(const std::vector<std::pair<int, uint32_t> >& cmds)
}
}
}
m_locker.unlock();
m_semaphore.release();
return 0;
}

Loading…
Cancel
Save