J'ai un script Perl que j'essaye de configurer en utilisant Perl Threads (utiliser des threads). Quand je lance des tests simples tout fonctionne, mais quand je fais mon script réel (qui a les threads exécutant plusieurs sessions SQL Plus), chaque session SQL Plus s'exécute dans l'ordre (ie sqlplus du thread 1 exécute les étapes 1-5, puis thread Sqlplus de 2 exécute les étapes 6-11, etc.). Je pensais avoir compris que les threads feraient un traitement simultané, mais quelque chose ne va pas. Des idées, ou devrais-je faire une autre magie Perl?Puis-je exécuter Perl ithreads sous Windows simultanément?
Répondre
Quelques explications possibles:
Courez-vous ce script sur un processeur multi-core ou machine multi-processeur? Si vous n'avez qu'un seul processeur, un seul thread peut l'utiliser à tout moment.
Y a-t-il des transactions ou des verrous impliqués dans les étapes 1 à 6 qui empêcheraient que cela se fasse simultanément? Etes-vous certain d'utiliser plusieurs connexions à la base de données et de ne pas en partager une seule entre les threads?
Il n'y avait qu'une seule connexion DB, ce qui n'était pas ce à quoi je m'attendais. Merci pour l'idée (je n'ai jamais pensé à vérifier ça), maintenant j'ai du travail à faire ... – Milner
En fait, vous n'avez aucun moyen de garantir dans quel ordre les threads vont s'exécuter. Donc, le comportement (si ce n'est pas ce que vous attendez) n'est pas vraiment faux.
Je suppose que vous avez une sorte de synchronisation qui se passe ici. Peut-être que SQL * Plus ne se laisse appeler qu'une seule fois? Certains programmes font que ...
Autres possiblilties:
création de fil et la création de processus (vous sont pour créer des sous-processus SQL * Plus, n'êtes-vous pas?) Prendre plus que de courir le fil , donc le thread 1 est terminé avant même que le thread 2 ne démarre
Vous utilisez des transactions dans vos scripts SQL qui forcent la synchronisation des mises à jour de base de données.
Vérifiez vos paramètres de base de données. Vous pouvez trouver qu'il est mis en place de manière conservatrice. Cela entraînerait même des lectures mineures pour bloquer tout accès à cette information.
Vous pouvez également appeler le threads::yield
.
- 1. exécuter quelques commandes simultanément
- 2. comment exécuter plusieurs animations simultanément dans mootools?
- 3. Comment exécuter un script Perl depuis un script Perl?
- 4. Comment puis-je installer ExtUtils :: PkgConfig en Perl sous Windows?
- 5. Comment faire fonctionner wxPerl dans Perl 5.10 sous Windows?
- 6. exécuter plusieurs versions d'Internet Explorer sous Windows Vista
- 7. Performance: compilez VS, Exécuter en Mono sous Windows et Linux
- 8. Comment puis-je exécuter à distance un script sous Windows?
- 9. Exécuter JavaFX sur Windows Mobile
- 10. Où est flock() pour Perl sur Windows?
- 11. Comment configurer Apache pour exécuter des scripts CGI Perl?
- 12. Est-ce que Devel :: Cover fonctionne sous mod_perl2 sur Perl 5.10 pour Windows?
- 13. Surligner simultanément deux contrôles enfants
- 14. gVim Perl tags sous Win32 - dois-je utiliser Perl :: Tags?
- 15. Performances QtCreator sous Windows
- 16. Mono-service sous Windows
- 17. Plusieurs versions de .NET CLR exécutées simultanément
- 18. recharger simultanément uitableview
- 19. Exécuter l'application par programme sous Vista
- 20. Comment puis-je exécuter VisualWorks sous OpenBSD?
- 21. Perl DBI - Exécuter le script SQL avec plusieurs instructions
- 22. Empaquetage d'une application avec dépendances sous Windows
- 23. Comment désactiver un bouton de fermeture de fenêtre Perl/Tk ('X') sous Windows
- 24. Comment puis-je savoir si mon script Perl s'exécute sous Windows?
- 25. Comment colorier le texte de sortie du script Perl sous Windows?
- 26. Comment puis-je obtenir des tuyaux de forking pour travailler dans Perl sous Windows?
- 27. Comment puis-je utiliser un processus d'arrière-plan à partir d'un script CGI Perl sous Windows?
- 28. Comment convertir une image WMF en PNG ou JPG sous Windows en utilisant Perl?
- 29. Comment puis-je inclure des modules Win32 uniquement lorsque j'utilise mon script Perl sous Windows?
- 30. Comment rediriger la sortie stdout et stderr d'un script Perl vers un fichier sous Windows?
Je, et je suppose que d'autres, sont curieux d'entendre un peu de suivi sur cette question. Avez-vous trouvé une solution? Les réponses étaient-elles utiles ici? – Frosty
Qu'est-ce que Frosty a dit ... Quel était le problème? –