Hi,

On 17 March 2015 at 23:06, Syam Krishnan <sya...@gmail.com> wrote:
> On 03/17/2015 08:03 PM, André Somers wrote:
>> Might I suggest a third method? Use QtConcurrent::run(yourFunction)
>> instead.
>
> The documentation on QtConcurrent::run() says
> "Note that the function may not run immediately; the function will only
> be run when a thread is available."

These threads are part of the global thread pool. The documentation
means, *if you are currently using all available threads in the pool*,
then QtConcurrent::run() will wait until one of those threads finish
before running. However, since you only want one instance running at a
time, then it's not a problem -- your function will run immediately.


> That is not acceptable to me. I am looking for the simplest solution
> that has the least overhead.

QtConcurrent::run() is the simplest solution available.

QtConcurrent uses QThreadPool internally. One of the reasons
QThreadPool was created was to reduce the overhead of starting new
threads.


> And I should have mentioned that only one instance of do_something()
> must be executing at any time.
> I am using QAtomicInt to control calls to this function. So when a
> second event is raised, it will check if
> the thread is already executing. If it is, it will wait till the thread
> execution is complete.

Yes, that is compatible with QtConcurrent::run().


> And I'm using Qt 4.8 on Linux.
>
> Syam

Regards,
Sze-Howe
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest

Reply via email to