我只想实现如下代码。

QString Class1::getNonce()
{
    //if some thread is getting nonce wait here until it finishes the its own job.
    mutex.lock();
    QString nonce=QString("%1").arg(QDateTime::currentDateTime().toTime_t());
    mutex.unlock();
    return nonce;
}

即使我用互斥锁编写,不同的线程也会得到相同的随机数。我怎么解决这个问题?
谢谢。

最佳答案

我更喜欢使用QMutexLocker

Class1::Class1()
{
    m_mutex = new QMutex();

}

QString Class1::getNonce()
{
    static int counter = 0;
    QMutexLocker locker(m_mutex);
    counter++;
    return QString::number(counter);
}

希望能有所帮助。

10-05 20:47
查看更多