Un autre post sur les QThread. Quand on connaît un tantiner le sujet, on peut commencer par celui-là pour remettre les pendules à l'heure.
-
-
http://www.vikingsoft.eu/how-to-use-qthread-properly/Un autre post sur les QThread.
-
-
http://blog.debao.me/2013/08/how-to-use-qthread-in-the-right-way-part-1/Le concept de lock-free programming est vraiment intéressant : empêcher les possibilités de blocages, ou les erreurs lors de l'utilisation d'une mémoire partagée entre plusieurs threads. L'idée étant de ne pas utiliser de mutex, et soit de séquentialiser l'accès à la mémoire partagée, soit d'utiliser des petites opérations atomiques (qui seront exécutée sans interruptions).
Il n'est pas tellement vraisemblable de créer un gros programme lock-free, l'idée est plutôt de rester pragmatique et de faire interagir plusieurs parties lock-free entres elles.
Le gain en performance par rapport à des mutex est assez flagrant. Et c'est à mettre en place pour coder efficacement sur du multi-processeur. Mais les compétences pour une mise en œuvre correcte sont aussi plus grandes.
"So keep mutexes, unless you have a lot of lock contention or are looking for a challenge."
Une autre ressource sur le sujet :
http://woboq.com/blog/introduction-to-lockfree-programming.html
Et comment gérer des opérations atomiques en Qt :
http://qt-project.org/doc/qt-5/qatomicint.html
-
-
http://preshing.com/20120612/an-introduction-to-lock-free-programming/"When you move a parent QObject, all its children are automatically moved too.
Remember though that member variables do not automatically become children; the parent-child relationship must be set by either:
J'ai comme le sentiment que cette remarque devrait être beaucoup plus visible dans les tutoriels sur les threads Qt !!!
-
-
http://qt-project.org/forums/viewthread/14806/P15Une définition assez claire de "thread-safe" et "reentrant".
-
-
http://qt-project.org/doc/qt-5/threads-reentrancy.html