If you use signals and slots you also have to worry about thread safety. Although the signal/slot system itself is thread-safe, if you use direct connections across threads you still have to lock the data. If you are absolutely 100 % sure that your program isn't going to access the same data from different threads at the same time you can leave out locking. If there is a chance your code might, use locking. It's safer that way.