exec() makes another event loop - but you can think of this as another version of the gui event loop.

I dont think it will be interfering with the running of other threads, and I think it should not be halting the execution of slots in the gui thread.

If you want to be able to block your producer/consumer, I suggest looking at something like this:
Qt Code:
  1. void
  2. myclass::slot_block()
  3. {
  4. QEventLoop eventLoop;
  5. connect(this, SIGNAL(continue()), &eventLoop, SLOT(quit()));
  6. eventLoop.exec(); // will process signals/slots, but myclass
  7. // will not otherwise execute any more code until the loop is exited
  8. }
  9.  
  10. void
  11. myclass::slot_continue()
  12. {
  13. emit continue();
  14. }
To copy to clipboard, switch view to plain text mode 
ie you need to implement two slots and a signal.