SlideShare a Scribd company logo
#include <stdio.h>
#include <pthread.h>
#define N 2
#define ARRLEN 1024
int arr[ARRLEN];
void *escritor(void *arg)
{
int i;
int num = *((int *)arg);
for (;;) {
sleep(random()%3);
for (i=0; i<ARRLEN; i++) {
arr[i] = num;
}
}
return NULL;
}
void *lector(void *arg)
{
int v, i, err;
int num = *((int *)arg);
for (;;) {
sleep(random()%3);
err = 0;
v = arr[0];
for (i=1; i<ARRLEN; i++) {
if (arr[i]!=v) {
err=1;
break;
}
}
if (err) printf("Lector %d, error de lecturan", num);
else printf("Lector %d, dato %dn", num, v);
}
return NULL;
}
int main()
{
int i;
pthread_t lectores[N], escritores[N];
int arg[N];
for (i=0; i<ARRLEN; i++) {
arr[i] = -1;
}
for (i=0; i<N; i++) {
arg[i] = i;
pthread_create(&lectores[i], NULL, lector, (void *)&arg[i]);
pthread_create(&escritores[i], NULL, escritor, (void *)&arg[i]);
}
pthread_join(lectores[0], NULL); /* Espera para siempre */
return 0;
}

More Related Content

What's hot

C language program
C language programC language program
C language programSk Sarfaraz
 
Luis cuñas programacion
Luis cuñas programacionLuis cuñas programacion
Luis cuñas programacionluisitofranklin
 
JavaScript
JavaScriptJavaScript
07 3 do-while반복문
07 3 do-while반복문07 3 do-while반복문
07 3 do-while반복문
Changwon National University
 
Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2
Dr. Loganathan R
 
Zadatak
ZadatakZadatak
Zadatak
Zeljko Lukic
 
Infitopost notepad
Infitopost   notepadInfitopost   notepad
Infitopost notepadAnand Kumar
 
(Meta 4) ejemplo calcular la mitad de un numero dev c++
(Meta 4) ejemplo calcular la mitad de un numero dev c++ (Meta 4) ejemplo calcular la mitad de un numero dev c++
(Meta 4) ejemplo calcular la mitad de un numero dev c++ Eli Diaz
 
C Program : Sorting : Bubble,
C Program : Sorting : Bubble, C Program : Sorting : Bubble,
C Program : Sorting : Bubble, Meita Jayani
 
Como crear una matriz de 3x3 con c++ con menu
Como crear una matriz de 3x3 con c++ con menu Como crear una matriz de 3x3 con c++ con menu
Como crear una matriz de 3x3 con c++ con menu
JoseGCordero
 
Clojure language
Clojure languageClojure language
Clojure language
André Mayer
 
Dsa 1
Dsa 1Dsa 1
programs
programs programs
Programa
ProgramaPrograma
ProgramaLiss
 

What's hot (20)

Some logics
Some logicsSome logics
Some logics
 
Vcs6
Vcs6Vcs6
Vcs6
 
C language program
C language programC language program
C language program
 
Luis cuñas programacion
Luis cuñas programacionLuis cuñas programacion
Luis cuñas programacion
 
JavaScript
JavaScriptJavaScript
JavaScript
 
07 3 do-while반복문
07 3 do-while반복문07 3 do-while반복문
07 3 do-while반복문
 
Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2Bcsl 033 data and file structures lab s1-2
Bcsl 033 data and file structures lab s1-2
 
Zadatak
ZadatakZadatak
Zadatak
 
Infitopost notepad
Infitopost   notepadInfitopost   notepad
Infitopost notepad
 
(Meta 4) ejemplo calcular la mitad de un numero dev c++
(Meta 4) ejemplo calcular la mitad de un numero dev c++ (Meta 4) ejemplo calcular la mitad de un numero dev c++
(Meta 4) ejemplo calcular la mitad de un numero dev c++
 
Corridas
CorridasCorridas
Corridas
 
C Program : Sorting : Bubble,
C Program : Sorting : Bubble, C Program : Sorting : Bubble,
C Program : Sorting : Bubble,
 
Como crear una matriz de 3x3 con c++ con menu
Como crear una matriz de 3x3 con c++ con menu Como crear una matriz de 3x3 con c++ con menu
Como crear una matriz de 3x3 con c++ con menu
 
Vcs12
Vcs12Vcs12
Vcs12
 
Programacion
ProgramacionProgramacion
Programacion
 
Clojure language
Clojure languageClojure language
Clojure language
 
Programa la frase
Programa la frasePrograma la frase
Programa la frase
 
Dsa 1
Dsa 1Dsa 1
Dsa 1
 
programs
programs programs
programs
 
Programa
ProgramaPrograma
Programa
 

Viewers also liked

D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...
D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...
D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...Istituto nazionale di statistica
 
CALCOLO DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
CALCOLO  DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...CALCOLO  DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
CALCOLO DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
Franco Bontempi
 
Quando me amei _de_verdade3
Quando me amei _de_verdade3Quando me amei _de_verdade3
Quando me amei _de_verdade3
Carlos Roberto Souza
 
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi Istituto nazionale di statistica
 
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioni
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioniM. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioni
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioniIstituto nazionale di statistica
 
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuaria
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuariaA. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuaria
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuariaIstituto nazionale di statistica
 
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
Istituto nazionale di statistica
 
Trabajo coolaborativo
Trabajo coolaborativoTrabajo coolaborativo
Trabajo coolaborativoJalil Nakid
 
MICE PSU group project
MICE PSU group projectMICE PSU group project
MICE PSU group projectPavit Tansakul
 
M. Bugamelli: Ristrutturazione delle imprese e produttività
M. Bugamelli: Ristrutturazione delle imprese e produttivitàM. Bugamelli: Ristrutturazione delle imprese e produttività
M. Bugamelli: Ristrutturazione delle imprese e produttivitàIstituto nazionale di statistica
 
S. Pastore-Istruzione e Formazione
S. Pastore-Istruzione e FormazioneS. Pastore-Istruzione e Formazione
S. Pastore-Istruzione e Formazione
Istituto nazionale di statistica
 
A.Valentini-Nuovi approcci alle esigenze conoscitive del territorio: verso...
A.Valentini-Nuovi approcci  alle esigenze conoscitive  del territorio:  verso...A.Valentini-Nuovi approcci  alle esigenze conoscitive  del territorio:  verso...
A.Valentini-Nuovi approcci alle esigenze conoscitive del territorio: verso...
Istituto nazionale di statistica
 
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
Medi Ambient. Generalitat de Catalunya
 
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
Istituto nazionale di statistica
 
Hot potatoes
Hot potatoesHot potatoes
Batxillerat 2012
Batxillerat 2012Batxillerat 2012
Batxillerat 2012ialvare3
 

Viewers also liked (20)

D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...
D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...
D. Speroni: I numeri della felicità: problemi di comunicazione quando si va "...
 
CALCOLO DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
CALCOLO  DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...CALCOLO  DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
CALCOLO DELLE STRUTTURE DI SUPPORTO DELLE TURBINE OFFSHORE - OFFSHORE WIND T...
 
Quando me amei _de_verdade3
Quando me amei _de_verdade3Quando me amei _de_verdade3
Quando me amei _de_verdade3
 
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi
S. Costa, V. Mastrostefano - Il 9° Censimento industria e servizi
 
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioni
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioniM. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioni
M. Paciello - Nel segno dell’innovazione: le campagne di pubbliche relazioni
 
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuaria
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuariaA. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuaria
A. Valentini - Ivalcens: la valutazione di UCC e UPC sulla rilevazione censuaria
 
R. Roncati - Segni e immagini per raccontare i numeri
R. Roncati - Segni e immagini per raccontare i numeri R. Roncati - Segni e immagini per raccontare i numeri
R. Roncati - Segni e immagini per raccontare i numeri
 
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
N. Pannunzi - Alcune evidenze dai dati sui consumi per classi di spesa delle ...
 
Trabajo coolaborativo
Trabajo coolaborativoTrabajo coolaborativo
Trabajo coolaborativo
 
In class dec 11
In class dec 11In class dec 11
In class dec 11
 
MICE PSU group project
MICE PSU group projectMICE PSU group project
MICE PSU group project
 
El club de la pelea
El club de la peleaEl club de la pelea
El club de la pelea
 
M. Bugamelli: Ristrutturazione delle imprese e produttività
M. Bugamelli: Ristrutturazione delle imprese e produttivitàM. Bugamelli: Ristrutturazione delle imprese e produttività
M. Bugamelli: Ristrutturazione delle imprese e produttività
 
S. Pastore-Istruzione e Formazione
S. Pastore-Istruzione e FormazioneS. Pastore-Istruzione e Formazione
S. Pastore-Istruzione e Formazione
 
A.Valentini-Nuovi approcci alle esigenze conoscitive del territorio: verso...
A.Valentini-Nuovi approcci  alle esigenze conoscitive  del territorio:  verso...A.Valentini-Nuovi approcci  alle esigenze conoscitive  del territorio:  verso...
A.Valentini-Nuovi approcci alle esigenze conoscitive del territorio: verso...
 
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
30 anys vigilant i millorant la qualitat de l'aire a Catalunya: nous reptes i...
 
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
F. Di Pede - L’archivio dei numeri civici, un'infrastruttura informativa per ...
 
Hot potatoes
Hot potatoesHot potatoes
Hot potatoes
 
Mercadeo
MercadeoMercadeo
Mercadeo
 
Batxillerat 2012
Batxillerat 2012Batxillerat 2012
Batxillerat 2012
 

Lector

  • 1. #include <stdio.h> #include <pthread.h> #define N 2 #define ARRLEN 1024 int arr[ARRLEN]; void *escritor(void *arg) { int i; int num = *((int *)arg); for (;;) { sleep(random()%3); for (i=0; i<ARRLEN; i++) { arr[i] = num; } } return NULL; } void *lector(void *arg) { int v, i, err; int num = *((int *)arg); for (;;) { sleep(random()%3); err = 0; v = arr[0]; for (i=1; i<ARRLEN; i++) { if (arr[i]!=v) { err=1; break; } } if (err) printf("Lector %d, error de lecturan", num); else printf("Lector %d, dato %dn", num, v); } return NULL; } int main() { int i; pthread_t lectores[N], escritores[N]; int arg[N]; for (i=0; i<ARRLEN; i++) { arr[i] = -1; } for (i=0; i<N; i++) { arg[i] = i; pthread_create(&lectores[i], NULL, lector, (void *)&arg[i]); pthread_create(&escritores[i], NULL, escritor, (void *)&arg[i]); } pthread_join(lectores[0], NULL); /* Espera para siempre */ return 0; }