6
votes

Librarie de filetage pour le service Windows multithread

Je recherche une bonne bibliothèque, de préférence en C #, que je peux utiliser dans un service Windows et traitera toute la fonctionnalité multithreading nécessaire.

Le service fonctionnera toutes les minutes de X, vérifiez une base de données pour les processus à appeler, et pour chacun d'eux apparaissent un fil et exécutez-le.

Chaque thread doit gérer des exceptions, leur enregistrement etc.

Toute suggestion?


1 commentaires

Toute solution finale avec échantillon de code source complet?


3 Réponses :


5
votes

Ceci est une langue dans la joue, mais que diriez-vous du framework .NET? Le System.threading Espace de noms a Tout ce dont vous avez besoin pour cela.

Si vous pouvez utiliser .NET 4 ou le Backport dans le cadre RX, la bibliothèque parallèle de tâche peut également en faire un peu plus facile, mais même sans cela, le cadre standard a tout ce dont vous auriez besoin.


2 commentaires

Reed, je cherche une solution complète, une implémentation de code utilisant System.threading. Non, je ne peux pas utiliser 4.0. Merci.


Pouvez-vous utiliser le cadre RX? Il comprend une liste complète de la bibliothèque parallèle de tâche, qui offre une énorme quantité d'une convivialité (beaucoup mieux que toute liberté de tiers que j'ai vue, à ce jour).



4
votes

considérer ce projet http://www.codeplex.com/smartthreadpool

Description du projet

Pool de thread intelligent est un piscine de fil écrit en C #. Il est beaucoup plus avancé que le pool de fil intégré .NET. Voici une liste des fonctionnalités du pool de threads:

  • Le nombre de threads change de manière dynamique en fonction de la charge de travail sur les threads de la piscine.
  • Les éléments de travail peuvent renvoyer une valeur.
  • Un élément de travail peut être annulé.
  • Le contexte du thread de l'appelant est utilisé lorsque l'élément de travail est exécuté (limité).
  • Utilisation du nombre minimum de poignées d'événements Win32, le nombre de la poignée de l'application n'explosera pas.
  • L'appelant peut attendre que plusieurs éléments de travail se terminent.
  • L'élément de travail peut avoir un rappel postexecute, appelé dès bientôt l'élément de travail terminé.
  • L'objet État, qui accompagne l'élément de travail, peut être disposé automatiquement.
  • Les exceptions d'élément de travail sont renvoyées à l'appelant.
  • Les articles de travail ont la priorité.
  • Groupe d'articles de travail.
  • L'appelant peut suspendre le début d'une piscine de fil et de groupe de travail.
  • Les threads ont la priorité.
  • peut exécuter des objets com qui ont un appartement à filetage unique.
  • Assistance et délégués de Func.
  • Support pour Windowsce (Limited)
  • Les maxthreads et MintHreads peuvent être changés au moment de l'exécution.
  • Annuler le comportement est imporbé.

1 commentaires

Fahad, c'est exactement ce que je cherche. Je vais attendre si quelqu'un d'autre a une meilleure idée, sinon je vais marquer le vôtre comme la réponse. Merci



2
votes

Si vous avez besoin d'une bibliothèque de planification comportant un support multi-threading, j'ai déjà utilisé cela avant: quartz.net

http://quartznet.sourceforge.net/


4 commentaires

Pouvez-vous me donner un exemple sur la façon dont vous l'avez utilisé s'il vous plaît?


Il y a un bon tutoriel sur le site, mais vous configurez essentiellement la planification des «déclencheurs» (basé sur la syntaxe de cron) qui déterminent quand un emploi incendie, vous associez des travaux spécifiques aux déclencheurs. Le quartz.net "Scheduler" gère tout le timing pour vous et invoque vos travaux aux heures définies. Quartznet.sourceforge.net/Tutorial/index.html


Nous l'avons utilisé pour lancer les requêtes périodiques de la base de données, ce qui a entraîné l'incendie d'autres actions.


Semble prometteur ... je vais mieux regarder. Il fonctionne correctement dans Windows Server 2008.