Уважаемые гуру,
Волнует вопрос: безопасно ли доступаться к одной QString в режиме readonly из разных потоков без мьютексов? Написал маленький тест, он работает, но все-таки хочется увидеть описание в документации/подтверждение: «да мол, все правильно, чувак, не боись». Я так понимаю, нужно копать в сторону implicit sharing & threads, но из этих нескольких абзацах ничего не понял:
http://doc.qt.nokia.com/qtopia4.2/threads.html#threads-and-implicit-sharing
больше информации не нашел.
Про контейнеры например явно сказано: «The container classes are implicitly shared, they are reentrant, and they are optimized for speed, low memory consumption, and minimal inline code expansion, resulting in smaller executables. In addition, they are thread-safe in situations where they are used as read-only containers by all threads used to access them.»
static QString commonString = "abc";
class FooThread: public QThread
{
public:
FooThread() : QThread(NULL) {}
void run()
{
while (1) {
QString qqq = commonString; // "copy" test
if (commonString == qqq) { // "is similar to" test
QString qqq = "horay";
}
}
}
};
int main(int argc, char *argv[])
{
QCoreApplication _a(argc, argv);
{
FooThread a;
a.start(QThread::HighestPriority);
FooThread b;
b.start(QThread::LowestPriority);
std::cout << "Press any key to quit ";
getch();
}
}