Является 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% безопасен в потоке...