[Qt-interest] Signal/Slot model is suitable for GUI applications but it isn't for console applications
Andre Somers
andre at familiesomers.nl
Mon Aug 23 17:47:36 CEST 2010
Op 23-8-2010 15:21, Valeriy Portnyagin schreef:
> Eirik,
> thanks for the link.
>
> Let's make the assumption, there is an active intra-thread
> communication with many signals and slots. Is the preferred way to use
> a native direct call of function or to stay in signal/slot model?
>
> regards,
> Valery.
I find that using signals and slots is a very nice way to communicate
between threads, but it is not suitable if you're going to fire loads
and loads of them. The (de-) marshalling of data and the use of the
event loop just gets too expensive. That has nothing to do with GUI vs.
console applications. For sending relatively infrequent updates from one
thread to another it works just fine though.
A native call will always be faster than a call through the signal/slot
mechanism, but you have to consider at what cost. It introduces a strong
coupling between components that may be better of being loosely coupled.
It also means that you will have to rely on other thread synchronization
mechanisms to make sure that you don't run into trouble on that front.
Just calling a method directly means that you call it from the thread
that makes the call. If you want to trigger something in another thread,
that means leaving some kind of message in a queue that the other thread
can pick up and process in it's own time. All that is possible, but
error prone. It is basically what Qt is doing for you behind the screens
using cross-thread signals and slots. There are opportunities for speed
optimizations, but you'd have to think if it would be worth doing for
your case, or that there may be ways to just limit the inter-thread
communication. The whole idea of using threads is that they can do their
work relatively independent of other pieces of your code. If you find
that you need a whole of communication between threads, perhaps you
should rethink your design and see if the division you made is really
the best one.
André
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100823/d2c4830b/attachment.html
More information about the Qt-interest-old
mailing list