J'utilise le pool de threads abordé dans https://github.com/meh/ruby-thread pour générer plusieurs téléchargeurs. Je tente de télécharger le contenu de nombreux flux RSS, soit près de 200 000 flux au total, mais j'ai des problèmes de verrouillage et de concurrence dans ma base de données MySQL lorsque j'appelle la méthode save
d'ActiveRecord. Je suis assez sûr que j'ai besoin de désigner un seul thread pour interagir avec la base de données et envoyer des signaux à ce fil, mais je ne suis pas sûr exactement comment structurer cela.Comment utiliser un pool de threads pour écrire dans ma base de données?
Répondre
Regardez la classe Queue de Ruby.
Créez une file d'attente utilisée pour stocker les informations d'enregistrement avant d'envoyer les données à votre base de données. Tous vos fils RSS lui écrivent en tant que "producteurs".
Créez un nouveau thread qui lit uniquement à partir de cette file d'attente et écrit dans la base de données en tant que "consommateur". Il ne devrait pas avoir de mal à rester en avance sur les fils RSS.
Vous aurez besoin de join
le code principal à tous les threads, y compris le consommateur DB, afin que tous les threads se terminent avant que l'application peut se fermer sinon vous pourriez vous retrouver avec des enregistrements non écrits.
Comme vous n'avez montré aucun code source, nous ne pouvons pas vous aider à l'intégrer, mais cela devrait être facile à faire.
- 1. PHP pool de threads?
- 2. Comment désigner un pool de threads pour les acteurs
- 3. Dois-je utiliser un pool de travail statique ou un pool de travail dynamique (de threads)?
- 4. Comment puis-je utiliser un pool de threads pour traiter chaque connexion dans un nouveau thread?
- 5. Pool de threads et affinité des données
- 6. Comment utiliser PG_restore pour sauvegarder/déplacer ma base de données?
- 7. Comment utiliser les threads d'un pool de threads pour chaque requête http en Java?
- 8. Comment utiliser le pool de connexions dans jdbc avec la base de données Oracle?
- 9. Comment réactiver un futurite annulé dans le pool de threads?
- 10. un pool de threads "simple" en java
- 11. Général - Nombre de threads dans le pool de threads
- 12. Aide pour C# pool de threads
- 13. conception de pool de threads en C++
- 14. IOCP dans le pool de threads personnalisés
- 15. Verrouillage et pool de threads
- 16. Problème de compréhension de pool de threads
- 17. F # - Besoin d'aide pour convertir un pool de threads
- 18. Pool de threads similaire au pool multi-traitement?
- 19. Comment puis-je utiliser des threads pour exécuter des requêtes de base de données dans XNA?
- 20. Création d'un pool de threads de travail pour un code non sécurisé pour les threads
- 21. Existe-t-il un pool de threads pour Silverlight avec un nombre maximum de threads?
- 22. Quels types/types de threads dois-je utiliser dans WPF et C# pour mon scénario ... threads réguliers, worker de fond ou pool de threads?
- 23. Utilisation de plusieurs threads pour écrire dans un seul fichier
- 24. but de pool de connexion à la base de données?
- 25. Pool de threads dans Qt 4.3
- 26. Quelle clé primaire utiliser dans ma base de données SQLite?
- 27. Code pour un pool de threads simple en C#
- 28. Quel gestionnaire de pool de threads est recommandé pour Perl?
- 29. Surinscription de pool de threads Java
- 30. Données de base et threads