nraynaud lol | La différence entre processus (fork) et threads (pthread_machin) :
- si tu fais un fork, les seuls moyens de communiquer entre les 2 processus sont les trucs classiques style pipes, système de fichier en général, IPC systemV (qui passent aussi par le système de fichier d'ailleur) et sockets (unix plutôt que réseau dans ce cas là). Faire une interraction d'un processus à l'autre, c'est changer de contexte, c'est lourd.
- si tu fais des threads, ils restent dans le même espace mémoire, chacun ayant sa petite pile d'appel (les variables globales de la libc étant alors au fond de la pile, de façon à ne pas foutre le bordel entre les threads). Tu peux donc partager directement de la mémoire, toute l'infrastructure pour protéger les accès concurrents est fournie par des pthread_machin. Faire une interraction entre threads c'est léger, on est entre gens de la même famille, pas de chichis.
Si tu n'as pas envie de te prendre la tête et que tu n'as pas de grosse concurrence intrinsèque, le select() avec une seule tâche, c'est le mieux, car rentrer dans la concurrence, c'est rentrer dans le merveilleux monde des bugs de synchronisation. |