Multithreading mutexlocker是否应该同时添加到两个函数中,在这两个函数中,它们试图从不同的线程访问和写入相同的变量?
下面是一个全局变量:Multithreading mutexlocker是否应该同时添加到两个函数中,在这两个函数中,它们试图从不同的线程访问和写入相同的变量?,multithreading,qt,qmutex,Multithreading,Qt,Qmutex,下面是一个全局变量: extern int i; 两个线程A&B尝试访问并写入变量i,线程A中的函数如下所示: void funA(int *i) { QMutexLocker(&m_mutex); //to lock the process *i += 5; } 和线程B进程函数: void funB(int *i) { QMutexLocker(&m_mutex); //**should I add this?** *i -= 2; }
extern int i;
两个线程A&B尝试访问并写入变量i,线程A中的函数如下所示:
void funA(int *i)
{
QMutexLocker(&m_mutex); //to lock the process
*i += 5;
}
和线程B进程函数:
void funB(int *i)
{
QMutexLocker(&m_mutex); //**should I add this?**
*i -= 2;
}
有两个线程只访问一个变量,我应该将QMutexLocker添加到两个函数中还是只添加一个?我可以添加一个吗?是的,您应该在两个函数中都使用
QMutexLocker
。在哪里定义了m_互斥?对i的所有访问都必须是相同的实例。我还避免使用全局变量,并使互斥和变量成为某个类的成员。