To quote the Mark Summerfield program C ++ GUI Programming with Qt 4:
Qt thread safe classes include QMutex, QMutexLocker, QReadWriteLock, QReadLocker, QWriteLocker, QSemaphore, QThreadStorage, and QWaitCondition. In addition, parts of the QThread API and several other functions are thread safe, especially QObject :: connect (), QObject :: disconnect (), QCoreApplication :: postEvent (), and QCoreApplication :: removePostedEvents ().
Qt expects you to use locking mechanisms in most of its classes. The docs will say, "All functions are thread safe," if any, and individual functions will also indicate "thread safe."
Qt Class Notes
Many Qt classes are reentrant, but they are not made thread-safe, because to ensure their thread safety there is additional overhead for repeatedly locking and unlocking QMutex. For example, QString is reentrant, but not thread safe. You can safely access different QString instances from several threads at the same time, but you cannot safely access the same QString instance from several streams at the same time (if you do not protect it gets access to QMutex).
Some classes and functions of Qt are thread safe. These are mainly thread-related classes (e.g. QMutex) and core functions (e.g. QCoreApplication :: postEvent ()).
Since QBuffer is a direct subclass of QIODevice , I would especially expect it to not be thread safe, but there are container classes that are thread safe for read access, but a write lock requires a lock:
Container classes
Container classes are implicitly separated, they are reentrant, and they are optimized for speed, low memory consumption, and minimal extension of embedded code, resulting in smaller executable files. In addition, they are thread safe in situations where they are used as readable containers by all the threads used to access them.