处理锁的释放

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; ts = time(NULL) + delayedCloseTime;
} }
size_t ref = 0;
std::vector<ITEM>::iterator it; std::vector<ITEM>::iterator it;
m_locker.lock(); m_locker.lock();
for (it = m_items.begin(); it != m_items.end(); ++it) for (it = m_items.begin(); it != m_items.end(); ++it)
{ {
if (it->cmd == cmd) if (it->cmd == cmd)
{ {
ref = it->references;
it->closeCmds++; it->closeCmds++;
if (ts > it->closeTime) if (ts > it->closeTime)
{ {
@ -217,6 +219,7 @@ size_t GpioControl::TurnOff(int cmd, uint32_t delayedCloseTime/* = 0*/)
} }
} }
m_locker.unlock(); m_locker.unlock();
m_semaphore.release();
return 0; 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; 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; return 0;
} }

Loading…
Cancel
Save