Qu'est ce qu'un thread de travail et sa différence par rapport à un fil que j'ai créer?
Je créer un thread par
Thread newThread= new Thread(DoSomeWork);
.
.
.
private void DoSomeWork()
{
}
Est-ce différent d'un autre thread? Si le son est..ce qui est mieux et quand dois-je utiliser un thread de travail?
Mon application a besoin d'avoir beaucoup de thread qui effectue le suivi, l'actualisation..
- Êtes-vous sûr que votre application a besoin de beaucoup de threads? Le fait que vous posez cette question, suggère que vous devriez essayer de minimiser le filetage...
- Que dois-je faire: Mes exigences 1) Lire un socket et écrire dans un fichier et insérer les valeurs en DB 2) maintenir la surveillance de la DB et l'affichage de CES valeurs actualisées(ou nouvellement inséré valeurs) dans l'INTERFACE utilisateur de l'écran en permanence
- Tj, il pourrait aider si vous indicat plate-forme (C#, Java) dans les Tags.
Vous devez vous connecter pour publier un commentaire.
Généralement, le terme thread de travail est utilisé pour décrire un autre thread que l'on est en train de faire le travail sur le thread en cours - qui dans de nombreux cas, est une de premier plan ou d'thread d'INTERFACE utilisateur. Ce n'est pas coulé dans le béton cependant.
Programmes Windows utilisent généralement un seul primaire thread pour gérer l'INTERFACE utilisateur et c'est généralement synchrone (c'est à dire des choses exécute l'un après l'autre). Si il y a un long cours d'exécution de la tâche à effectuer, puis pour éviter de faire l'INTERFACE utilisateur de bloquer dans ces types de programmes que vous utilisez un thread de travail (qui peut être soit un thread de premier plan ou un thread d'arrière-plan) pour faire le travail (de manière asynchrone pour le thread principal), et d'en présenter les résultats à l'thread principal de consommer.
Dans les programmes windows, cela se fait via des messages. Si vous utilisez les bibliothèques comme dire que le .net framework, puis l'utilitaire spécial des classes de pool de threads et BackgroundWorker sont disponibles pour faire de fond ou de la thread de travail plus faciles à manipuler. Mais comme toujours, vous pouvez à l'aide de la plate-forme des primitives pour atteindre le même but.
WaitForSingleObject()
etPeekMessage()
) dans une boucle de la contourner. (Voir cette réponse si vous voulez utiliser cette technique.) La ponte arrêt d'un thread pour faire ces longs processus vous permet de vous éviter de faire ces boucles.Je suis en train d'expliquer le concept de façon simple ,j'espère que ça aidera à mieux comprendre le thread de concept.
Définition Générale:-
Un “thread” est juste un thread qui s'exécute à effectuer un certain travail de fond sur l'ordre de son patron(on peut l'appeler “client” ) et le travail de mise à jour résultat du patron.
Définition Technique:-
Un thread de travail est généralement défini comme un fil qui est activé sur les demandes des clients.
Exemple 1:
1 - Nous avoir une pizza magasin, où il y a 10 mecs qui sont des experts dans la préparation de délicieuses pizzas. Ces sont appelés les "threads".
2 - Nous avons un gars qui reçoit les commandes des clients. Ce gars-là est appelé “client”. Chaque fois qu'un nouveau arrive, l'un des "thread" commence la préparation de la pizza et de la mise à jour du client une fois la pizza est préparée.
3 - Quand il y a moins de 10 commandes, certains des travailleurs de s'asseoir juste idéal.
4 - Quand il y a plus de 10 commandes, les commandes sont mises en file d'attente.
Exemple 2:
1 - Il existe une application serveur qui écoute sur le port 8080.
2 - Une requête arrive sur le port 8080.
3 - Un thread d'écoute (il est appelé comme “client”) prend cette demande et le distribue à un “thread” qui effectue la demande. Il est en fait un pool de “threads” maintenu ( beaucoup d'objets de la “thread” programme) sur le serveur d'application.
4 - Si deux demandes en même temps, les deux threads sont affectés et la tâche est exécutée simultanément.
Je ne pense pas beaucoup de différence technique autre que de simples terminologie.
Threads de travail appelés ainsi parce qu'ils sont en attente pour certains d'emploi à venir et fait le travail assigné par quelqu'un d'autre. Par exemple, un processus du serveur web reçoit la demande et de l'affecter à un fil de sa piscine pour le traitement. Ce thread obéit à des processus et termine le travail, et retourne à la piscine. Jusqu'alors le thread principal sera de faire quelque chose d'autre.
Pour votre but:
Surveillance de la DB en continu est requis pour l'identification/mise à jour de nouvelles valeurs. Il peut juste être un fil, fonctionnant toujours en arrière-plan, se réveille régulièrement et met à jour les valeurs dans l'INTERFACE utilisateur de DB.