Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
rdemeter
GitHub Repository: rdemeter/so
Path: blob/master/lab7/exemplu.c
221 views
1
#include <stdio.h>
2
#include <stdlib.h>
3
#include <pthread.h>
4
5
/* structura ce contine parametrii transmisi fiecarui thread */
6
struct parametri
7
{
8
char caracter; /* caracterul afisat */
9
int numar; /* de cate ori va fi afisat */
10
};
11
12
/* functia executata de thread-uri */
13
void* afisare_caracter(void *params)
14
{
15
struct parametri* p = (struct parametri*) params;
16
int i;
17
for (i=0; i<p->numar; i++){
18
printf("%c\n", p->caracter);
19
//sched_yield();
20
}
21
printf("\n");
22
return NULL;
23
}
24
25
int main()
26
{
27
pthread_t fir1, fir2;
28
struct parametri fir1_args, fir2_args;
29
30
/* cream un thread care va afisa 'x' de 11 ori */
31
fir1_args.caracter = 'x';
32
fir1_args.numar = 11;
33
if (pthread_create(&fir1, NULL, &afisare_caracter, &fir1_args)) {
34
perror("pthread_create");
35
exit(1);
36
}
37
38
/* cream un thread care va afisa 'y' de 13 ori */
39
fir2_args.caracter = 'y';
40
fir2_args.numar = 13;
41
if (pthread_create(&fir2, NULL, &afisare_caracter, &fir2_args)) {
42
perror("pthread_create");
43
exit(1);
44
}
45
46
/* wait for a thread to terminate */
47
if (pthread_join(fir1, NULL))
48
perror("pthread_join");
49
if (pthread_join(fir2, NULL))
50
perror("pthread_join");
51
52
return 0;
53
}
54
55