我想知道这段代码有什么问题。有时我得到分界错误,有时没有。这是我在一个更大的软件中遇到的一个问题,这个想法是只有一个线程同时执行 MyClass::print 方法。即使使用这个简单的示例,它也会因分段错误而失败。代码有什么问题?我该如何解决这个问题?
谢谢!
#include <iostream>
#include <ctime>
#include <QMutex>
#include <QtConcurrentRun>
class MyClass : QThread {
public:
void print(std::string str) {
mutex.lock();
std::cout << "In some thread: " << str << "\n";
mutex.unlock();
}
private:
QMutex mutex;
};
int main() {
MyClass myCl;
for(int i=0; i < 10; i++) {
QtConcurrent::run(&myCl, &MyClass::print,std::string("bla"));
}
}