J'ai un objet qui nécessite beaucoup d'initialisation (1-2 secondes sur une machine costaude). Bien qu'une fois initialisé, il ne faut que 20 millisecondes pour faire un "job" typiqueUn bon moyen d'avoir un fil de travail sans fin?
Afin d'éviter qu'il ne soit réinitialisé chaque fois qu'une application veut l'utiliser (ce qui pourrait être 50 fois par seconde ou non J'ai décidé de lui donner un travail, et de le faire fonctionner sur son propre fil, en vérifiant s'il y a du travail pour ça dans le. Cependant, je ne suis pas entièrement sûr de savoir comment faire un fil qui fonctionne indéfiniment avec ou sans travail.
Voici ce que j'ai jusqu'à présent, toute critique est accueillie
private void DoWork()
{
while (true)
{
if (JobQue.Count > 0)
{
// do work on JobQue.Dequeue()
}
else
{
System.Threading.Thread.Sleep(50);
}
}
}
Après la pensée: je pensais que je peux avoir besoin de tuer ce fil grâce INSEAD de le laisser courir pour toujours, donc je pense que je vais ajouter un Type de travail qui indique le thread à la fin. Toutes les pensées sur la façon de mettre fin à un fil comme celui-ci ont également apprécié.
File d'attente classique, verrouillée et pulsée. –
+1 très agréable ... –
Pourquoi écrire quelque chose qui a déjà été écrit? Pfx, bébé. – Will