2017-09-14 3 views
-1

-Interview QuestionQuels sont les inconvénients des fils sur le processus?

on m'a demandé les inconvénients de thread. Et quel est le scénario où nous ne devrions pas utiliser thread à la place utiliser process?

Je ne pouvais pas penser beaucoup sauf accès mémoire invalide dans certains cas.

+0

Copie possible de [Quelle est la différence entre un processus et un thread?] (Https://stackoverflow.com/q/200469/62576) –

+0

@KenWhite ce message ne contient que des points positifs de thread. – roottraveller

+0

Les fils ont beaucoup d'avantages. C'est juste que beaucoup de programmeurs ne savent pas écrire du code thread correctement. Deadlock et les bugs de course sont très difficiles à diagnostiquer et à corriger. Beaucoup moins d'un problème avec un processus à un seul thread, il isole la mémoire afin qu'un thread dans un autre processus ne puisse rien corrompre. Cette isolation rend également difficile la coopération entre les processus, mais faire quelque chose à ce sujet a tendance à causer des bogues qui sont très difficiles à diagnostiquer et à corriger. –

Répondre

1

Les threads, engendrés par le même processus, partagent tous la même mémoire. Les processus s'exécutent tous dans leur propre contexte de mémoire. Sous Linux (je ne sais pas quel est le comportement sous Windows), un processus enfant nouvellement créé reçoit généralement une copie de certaines parties du contexte de mémoire du processus parent et est donc plus coûteux en mémoire au moment de l'exécution et CPU-temps/MMU sage à la création. Commutation de contexte - (off) charger le processus de ou vers le CPU (cela arrive, quand un processus ou un thread n'a rien à faire et est poussé vers une file d'attente en faveur de processus ou threads avec travail réel) - peut être plus cher avec un processus. D'autre part, les processus peuvent être beaucoup plus sûrs puisque leur mémoire est isolée de la mémoire de leurs processus frères.