exactly how are you using the qbblock routine? The routine itself doens't override the supervisor, if the supervisor has dispatched a job, and is waiting for the worker to return back a "Running" state.
I suspect what you're trying to accomplish is to submit a job, then block it. The standard method for accomplishing this, is to submit the job already blocked. To do this, simply submit the job:
QbJob* job = new QbJob();
job->status(QbStatus(QB_STATUS_BLOCKED));