@podkiva said in Blocking Queue Between QThreads: P.S. It seems you forgot to call finishProcessing() at the end of process(const Command & cmd) {...}. No, it's not an oversight. I left it for you to call whenever appropriate, as you might be doing some asynchronous operation in process(const Command & cmd), like reading a QProcess output, or reading a socket or w/e. In that case you'd connect the signal signifying the end of that async operation to the mentioned slot to push the next command to be handled.