[Interest] QMutex and QTimer timeout

Thiago Macieira thiago.macieira at intel.com
Tue Oct 7 06:42:45 CEST 2014


On Monday 06 October 2014 17:23:05 Francisco Ares wrote:
> Hi,
> 
> I'm trying to implement a serial communication class.  Under certain
> conditions, I would like to send a message, then keep the thread locked
> until some specific answer arrives, then the thread could be unlocked.

Ok. It's usually a bad idea, but understood.

Why can't you use QtSerialPort?

> While testing the connection, the lock (using a QMutex for this) may lock
> forever if the connection is opened, so I have implemented a single shot
> QTimer so that the thread could have an exit point when this timer period
> times out.
> 
> But it does not work.
> 
> The QMutex and the QTimer are on the same thread.  Does QMutex locks the
> thread so much?  Any advice?

Of course. The only thing that can take a mutex out of the lock() call is the 
lock succeeding.

You can use tryLock() with a timeout, but then you have a race condition: the 
lock may have just become available an instant after the lock timed out, but 
before you could do anything.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center




More information about the Interest mailing list