Changeset 15 for trunk/threads-shared.c
- Timestamp:
- Apr 21, 2012, 12:24:25 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/threads-shared.c
r2 r15 10 10 int run(void* s) 11 11 { 12 int* shared = (int*)s; / * alias per comodita` */12 int* shared = (int*)s; // alias per comodit\`a 13 13 while (shared[0] < 10) { 14 14 sleep(1); … … 28 28 29 29 int shared[2] = {0 , 0}; 30 31 30 /* int clone(int (*fn)(void *), 32 31 * void *child_stack, … … 40 39 malloc(4096)+4096, /* lo stack del nuovo processo 41 40 * (cresce verso il basso!) */ 42 CLONE_VM | SIGCHLD, / * la (virtual) memory e` condivisa */41 CLONE_VM | SIGCHLD, // (virtual) memory condivisa 43 42 shared) < 0){ 44 perror("Errore nella creazione"); 45 exit(1); 43 perror("Errore nella creazione");exit(1); 46 44 } 47 45 48 46 if (clone(run, malloc(4096)+4096, CLONE_VM | SIGCHLD, shared) < 0){ 49 perror("Errore nella creazione"); 50 exit(1); 47 perror("Errore nella creazione");exit(1); 51 48 } 52 49 53 50 /* Memoria condivisa: i due figli nell'insieme eseguono 10 o 54 * 11 volte: e`possibile una corsa critica. Il padre51 * 11 volte: \`e possibile una corsa critica. Il padre 55 52 * condivide shared[0] con i figli */ 56 53 57 while( 1) {54 while(shared[0] < 10) { 58 55 sleep(1); 59 56 printf("Processo padre. s = %d\n", shared[0]);
Note:
See TracChangeset
for help on using the changeset viewer.