我在主线程中显示图片,而在辅线程中对图片进行调整,为防止共享冲突我在两
个线程中都用CSingleLock对共享数据锁定,但在显示时会有停顿,我想知道能不能在显示时知道那个对象(共享数据,因为我显示的是多个对象)被锁定,我好跳过不显示,是否有其他更好的方法。
个线程中都用CSingleLock对共享数据锁定,但在显示时会有停顿,我想知道能不能在显示时知道那个对象(共享数据,因为我显示的是多个对象)被锁定,我好跳过不显示,是否有其他更好的方法。
{
...//显示
}
else
{
...//忽略
}
我是这样用的
调整
CDrawImage* pObj = ThreadInfo.pObj (ThreadInfo是共享数据结构)
....Lock()
pObj->ResizeImage()
....Unlock()
显示
....Lock()
pObj->DrawImage()
....Unlock()
我的意思是pObj中哪一个正在被修改
"每一个对象用一个Mutex做互斥控制"能不能说详细点,我很菜呀!
最好给我个例子什么的!
老大怎么不回答呀!我很急呀!在线!
CDrawImage* pObj = ThreadInfo.pObj (ThreadInfo是共享数据结构)
CSingleLock lock(&ThreadInfo.m_mutex);
lock.Lock();
pObj->ResizeImage()显示
CDrawImage* pObj = ThreadInfo.pObj (ThreadInfo是共享数据结构)
CSingleLock lock(&ThreadInfo.m_mutex);
if (lock.Lock(30))
{
pObj->DrawImage()
}ThreadInfo.m_mutex控制对ThreadInfo.pObj的访问,这样就可以保证一个pObj有一个mutex对应,而且只有一个对应。