I think this can be a QReadLocker... because as you're using it "write" operations are changing the state of the overlay vectors... so if the operation can add or remove an overlay it needs to be a write, but if it's just accessing the overlay list/vector it can be a read.