Fork mystries....
Aziz Kezzou
french.linuxian at gmail.com
Fri Jun 3 23:55:35 GMT 2005
Hi all,
It's probably not the right mailing list to ask but I am really
surprised about global variable sharing in a multithreaded C
application. If I remember well my multithreading course global
variables are shared between threads, right ?
Example :
----------------------------
int counter = 0;
int main() {
if( fork()==0) {
while(1) {
sleep(1);
counter++;
printf("Son : counter = %d\n", counter);
}
} else {
while(1) {
sleep(1);
printf("Parent : counter = %d\n", counter);
}
}
return 0;
}
----------------------------
All I get is :
Parent : counter = 0
Son : counter = 1
Son : counter = 2
Parent : counter = 0
Son : counter = 3
Parent : counter = 0
Son : counter = 4
Parent : counter = 0
why counter isn't shared between the two threads ??!
thanks,
-aziz
More information about the freebsd-hackers
mailing list