This improves the overall performance of PacketSender, but using Qt's QWaitCondition that allows the PacketSender and it's users to implement a clean producer/consumer pattern. The thread that the PacketSender runs on is now a true consumer only running when there are packets to send.