Fork mystries....
ray at redshift.com
ray at redshift.com
Sat Jun 4 00:47:14 GMT 2005
Aziz,
Fork is for process creation. Look up pthread_create() and/or POSIX thread
creation, etc. You should be able to find a lot of info on google with a quick
search:
http://math.arizona.edu/~swig/documentation/pthreads/
From the OS standpoint a process is like a different program when you fork it.
A thread is more like a single program with a bunch of subsections all running
at the same time, then the OS and CPU jump back and forth giving a little
run-time to each subsection. Threads share a common space; processes [as far as
I recal] do not (which is where inter process communication comes into play).
Anyway, have fun! :)
Ray
At 07:55 PM 6/3/2005 -0400, Aziz Kezzou wrote:
| 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
| _______________________________________________
| freebsd-hackers at freebsd.org mailing list
| http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
| To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"
|
|
More information about the freebsd-hackers
mailing list