Discussione: [C] creazione processi
View Single Post
Old 10-01-2012, 15:44   #8
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Non è vero che è un obbrobrio e createprocess non è molto diversa. L'unica differenza è nella semantica appunto, ma l'implementazione di fork degli unix moderni ( linux, freebsd, ecc... ) è efficiente almeno quanto la createprocess.

Inoltre la fork è molto più semplice da utilizzare e accoppiata all'exec dà molta flessibilità ed estrema facilità d'uso.

Ad esempio una fork sotto unix ti permette di creare un clone del processo corrente ( si, è un'operazione utile in taluni casi ), mentre la createprocess non clona il processo.

Si tratta di due funzioni nate per scopi molti diversi. L'errata convinzione circa la bruttezza di fork è dovuta al fatto che le prime implementazioni copiavano fisicamente tutta la memoria del padre nel processo figlio, perdendo tempo. Oggi si usa il copy-on-write e la memoria viene clonata solo se necessario ( se ad esempio fai fork e poi subito exec, non perderà tempo nel clonare il padre visto che non serve ).

Ad ogni modo, se vuoi ottenere lo stesso risultato su entrambi i sistemi, devi per forza prevedere due distinti procedure nel codice. Puoi usare le direttive di compilazione per compilare selettivamente l'una o l'altra.

Ultima modifica di pabloski : 10-01-2012 alle 15:46.
pabloski è offline   Rispondi citando il messaggio o parte di esso