Comment ajouter des tâches à un tango (D) ThreadPool de manière asynchrone?
-
27-10-2019 - |
Question
Je compare un modèle de piscine file d'attente de tâches / fil système à une n -threads système D. Je suis vraiment nouveau dans le langage de programmation D mais qui ont travaillé avec des fils en C, Java, et Python avant. J'utilise la bibliothèque Tango, et je construis un serveur web comme un exemple.
J'ai décidé d'utiliser tango.core.ThreadPool
comme mon pool de threads, que mon projet se concentre sur la facilité d'utilisation et la performance entre threads traditionnels et les files d'attente tâche.
La solution 2
Je découvre que la façon dont je construisais mon délégué a contribué à bloquer dans une partie du code. Au lieu de se fermer sur l'objet retourné par SocketServer.accept
, je passe maintenant cet objet en tant que paramètre à mon délégué. Je ne sais pas pourquoi cela a été la solution, mais le programme fonctionne maintenant comme prévu. J'ai entendu que la fermeture de la version D 1 sont brisés; peut-être ce qui a quelque chose à voir avec elle.
Autres conseils
Qu'en est void append(JobD job, Args args)
? de la documentation, il fonctionne comme la forme Executor.execute(Runnable)
java (soumettre une tâche à exécuter un certain temps dans l'avenir)
Notez que c'est ici une file d'attente LIFO au lieu de la file d'attente FIFO devrait donc allouer suffisamment de travailleurs