[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