[Interest] Executing a small function as a thread

Sze Howe Koh szehowe.koh at gmail.com
Tue Mar 17 16:53:36 CET 2015


On 17 March 2015 at 23:39, Syam Krishnan <syamcr at gmail.com> wrote:
> On 03/17/2015 08:51 PM, André Somers wrote:
>> Well, in any multi-threaded programming, you basicaly have no control
>> over when something runs. That's up to the OS, not you. It will usually
>> be "soonish", but...

True. The only time when I've experienced "non-soonish" behaviour
though is when a non-real-time OS is under heavy load, which means
everything gets significantly delayed anyway.

<snip>

> Well, my situation already needs me to poll objects periodically.
> The following is indicative of my problem:
>
> while(1)
> {
>    for(all_objects)
>    {
>       ret = object[i]->execute()
>       if(ret == complete) all_objects.remove( object[i] );
>    }
>
>    sleep(1ms);
> }
>
> Now, object::execute() is supposed to get its work done by calling
> do_something().
> execute() should not block but do_something() is blocking. That's why I
> need to call it in a separate thread.
> Till do_something() completes, subsequent calls to execute() shall
> return a value indicating that it's execution
> is not complete, so that it will not be removed from the list of objects
> (all_objects).

Does execute() do anything else besides call do_something(), and does
your while-loop do anything else before sleeping? If not, what you
really want is for QtConcurrent::map() to call
execute()/do_something() on every object in your container.


Regards,
Sze-Howe



More information about the Interest mailing list