Eli vaikka kaksi for (1 to 100) silmukkaa pitäisi suorittaa samanaikaisesti. Toinen vaikka tulostaisi "Moi isä" ja toinen "Moi äiti".
Miten tuo onnistuu C:lla, eli kyse on säikkeistä, jotka suoritaan samanaikaisesti.
Miten tuo onnistuu C:lla, eli kyse on säikkeistä, jotka suoritaan samanaikaisesti.
Vastaukset 5
Vanhimmat
http://www.codeguru.com/forum/showthread.php?threadid=271012
noin winkkarissa, näin linux/posix
http://www.yolinux.com/TUTORIALS/LinuxTutorialPosixThreads.html
????
http://msdn.microsoft.com/archive/default.asp?url=/archive/en-us/dnarwbgen/html/msdn_posix.asp
voit kokeilla forkkia, tai sitten käyttää posix standardia, löytyy useimista ympäristöistä.
int lapsi=0;
lapsi = fork();
if(lapsi)
{
printf("ollaan lapsessa
")
}
else
{
printf("ollaan äidissä
")
}
ei nyt oo mitää materiaalia käsillä, että en oo ny ihan satavarma.
Kuitenkin tuota forkin paluuarvoa testaamalla koodissa forkin jälkeen tiedetään missä threadissa ollaan. For-silmukassa vaikka forkkailee niin saa kivasti tehtyp p2p-ohjelmia...
wait-komennoilla pysty sitten tutkiin esimerkiksi äitiprosessissa onko lapset jo valmiit jne.
Annettu if-lause bugaa hieman, sillä forkin virhettä ei tarkisteta ja paluuarvo tulkittiin väärinpäin.
if (lapsi > 0) {
/* parent (en ole ikinä kuullut nimitystä äitiprosessi..) */
} else if (lapsi == 0) {
/* lapsi */
} else {
/* virhe */
}
Katso lisätietoja komennolla man 2 fork.