qDebug()
是线程安全的吗?我所说的线程安全不仅仅是指不会崩溃,还包括如果我从不同的线程调用qDebug()
,是否可能导致输出混乱?我使用了这段代码进行测试,似乎并不是这样,但是我无法在文档中找到相关信息。
这是我的测试代码:
#include <QtConcurrent>
#include <QApplication>
void print_a() {
for (int ii = 0; ii < 10000; ii++) {
qDebug("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
}
}
void print_b()
{
for (int ii = 0; ii < 10000; ii++) {
qDebug("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtConcurrent::run(print_a);
QtConcurrent::run(print_b);
return a.exec();
}
无论在哪里都没有“a”和“b”混在同一行,但我仍然不确定它是否100%线程安全...
qDebug()
的情况下,它没有说明它是线程安全的,因此很可能不能够从不同的线程中使用。 - thuga