2012-04-06, 13:53
Please help me understand when CSingleLock should be called.
Consider the 2 functions below. Why is CSingleLock required for function #1 but not for #2? How do I know if the lock is required?
Uses CSingleLock
does not use CSingleLock
Consider the 2 functions below. Why is CSingleLock required for function #1 but not for #2? How do I know if the lock is required?
Uses CSingleLock
Code:
bool CFileItemList::UpdateItem(const CFileItem *item)
{
if (!item) return false;
CSingleLock lock(m_lock);
for (unsigned int i = 0; i < m_items.size(); i++)
{
CFileItemPtr pItem = m_items[i];
if (pItem->IsSamePath(item))
{
*pItem = *item;
return true;
}
}
return false;
}
does not use CSingleLock
Code:
void CPlayList::UpdateItem(const CFileItem *item)
{
if (!item) return;
for (ivecItems it = m_vecItems.begin(); it != m_vecItems.end(); ++it)
{
CFileItemPtr playlistItem = *it;
if (playlistItem->IsSamePath(item))
{
*playlistItem = *item;
break;
}
}
}