qt-interest@trolltech.com
[Top] [All Lists]

Re: How to yield execution to main messageloop?

Subject: Re: How to yield execution to main messageloop?
From: Thiago Macieira
Date: Thu, 20 Dec 2007 16:28:30 -0200
Wente, Andreas wrote:
>logger:
>        - get logmessage
>        - while sharememory is full
>                - sleep 10ms                    <-- The problem
>        - append log to shared memory
>
>reciever:
>        - forever
>                - sleep 10ms
>                - lock sharedmemory
>                - copy sharedmemory
>                - unlock sharedmemory
>                - write log to sqlite-db

Your receiver is waiting 10 ms too much.

It shouldn't wait at all if there's data available. But it must not 
busy-wait. Therefore you need a way of being notified immediately 
whenever there's data available, but sleep for as long as you need when 
there isn't.

We're talking about QSystemSemaphore or QLocalSocket.
-- 
Thiago José Macieira - thiago.macieira AT trolltech.com
Trolltech ASA - Sandakerveien 116, NO-0402 Oslo, Norway
<Prev in Thread] Current Thread [Next in Thread>