J'ai une méthode threadSafe qui est appelée par plusieurs threads. Y a-t-il un moyen de savoir quel fil l'a appelé?Comment savoir quel thread appelé une méthode
Répondre
Eh bien, vous savez le fil qui appelle la méthode, et par extension le même fil sera actif à l'intérieur cet appel de méthode. Vous pouvez simplement appeler QThread::currentThread()
pour l'obtenir.
en fait il n'y a pas de méthode appelée getCurrentThread mais il y a un static dans QThread appelé currentThread ... ill try it. –
Ah oui, désolé - je pensais que le message original disait Java :) J'ai mal tourné currentThread en Java, il est en fait Thread.currentThread() ici aussi, euh :) En tout cas, heureux de mon poste aidé; On dirait que les deux API ont des classes/méthodes similaires de toute façon :) –
Si vous en avez besoin, vous pouvez ajouter un paramètre threadId
, et laissez-fil Faites passer à la méthode
ouais je le savais mais je voulais minimiser l'intervention de l'utilisateur afin de ne laisser personne appeler la fonction de la mauvaise façon, maintenant l'utilisateur doit savoir si c'est un appel mainthread ou qthread. Donc, il faudrait ajouter ce paramètre seulement quand on travaille dans le qthread –
- 1. Comment savoir qui a appelé une méthode?
- 2. Comment savoir quel module de formulaire a appelé votre classe
- 3. MySQL Triggers: Comment savoir quel script l'a appelé?
- 4. Comment savoir quel thread verrouille un fichier dans Java?
- 5. Découvrez quelle classe a appelé une méthode
- 6. Comment savoir une utilisation de la mémoire de thread?
- 7. comment dire quel objet a appelé une méthode de délégué (objectif c)
- 8. Comment savoir sur quel lecteur une application Java est installée?
- 9. Comment puis-je laisser ma fonction de rappel savoir quel élément d'un vecteur l'a appelé?
- 10. Surveiller quel thread télécharge l'URL
- 11. Comment savoir quel formulaire a appelé un autre formulaire dans vb.net?
- 12. Comment savoir quel module charge Moose?
- 13. Comment identifier ou savoir quel contrôle est référencé dans une méthode?
- 14. Comment encapsuler à partir d'un thread dans une méthode?
- 15. méthode UITableViewController init pas appelé
- 16. C++ méthode redéfinie pas appelé
- 17. Mocking une méthode d'objet dans un thread?
- 18. Comment savoir dans quel moniteur une fenêtre WPF se trouve
- 19. Comment savoir quel processus/service initie une connexion réseau
- 20. Comment savoir quel bouton radio est sélectionné dans une vue?
- 21. Comment savoir quel script exécute une requête MySQL?
- 22. Comment savoir quel itinéraire a été sélectionné?
- 23. Comment savoir quel formulaire est en haut?
- 24. Comment savoir quel objet j'ai cliqué?
- 25. Comment savoir quel serveur SMTP est utilisé?
- 26. Comment limiter une méthode à un thread particulier?
- 27. Comment appelez-vous une méthode générique sur un thread?
- 28. Comment savoir quel fichier initialise l'objet?
- 29. Comment savoir quel shell unix j'utilise?
- 30. comment savoir quel port mon application utilise
La plupart du temps, c'est une mauvaise idée de changer le comportement d'une méthode en fonction de l'identité de l'appelant. Qu'est-ce que vous essayez de faire cela devrait changer en fonction du thread dans lequel l'appelant s'exécute? S'il est raisonnable d'avoir besoin de le savoir, alors il y a généralement quelque chose de clairement lié à la question à passer. – PanCrit
Fondamentalement, j'ai functionA qui utilise un QUDPSocket à writeDatagram et le signal readyRead est connecté à un slot readDatagram. Quand functionA est appelée depuis le mainthread, je ne veux pas que le signal soit émis ou que la méthode soit appelée (j'utilise readyread directement) mais je le fais quand il est appelé depuis qthread. La socket udp est dans le thread principal. –
Vous ne pouvez pas casser la fonction A dans 2 fonctions ou plus? Alors le fil principal appelle seulement la "partie nécessaire" et les autres appellent la fonction complète? –