Goeie morge idereen.
Ik ben bezig met C++ en ptheads. Heb al met google gezocht en de search hier en tal van prachtige uitleg gelezen en voorbeelden doorgenomen..
maar jaja je raadt t al.. heb t nog niet werkend
zou iemand mij kunnen helpen ..? ik vraag hier niet om dom weg code,
maar gewoon een zetje in de goede richting... TIA..
het lukt me dus niet, om de teller en/of buffer te beveiligen op het moment dat p fftjes slaapt, c gaat namelijk doodleuk verder terwijl de mutex gelocked is.. of hoort te zijn..
Ik ben bezig met C++ en ptheads. Heb al met google gezocht en de search hier en tal van prachtige uitleg gelezen en voorbeelden doorgenomen..
maar jaja je raadt t al.. heb t nog niet werkend
zou iemand mij kunnen helpen ..? ik vraag hier niet om dom weg code,
maar gewoon een zetje in de goede richting... TIA..
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
| #include <pthread.h>
#include "errors.h"
#define N 3
#define MAX 9
pthread_mutex_t mutex;
void *c(void*);
void *p(void*);
int teller=0;
int buf[20]={0};
int main ()
{
int status;
pthread_t thread,thread1;
pthread_mutex_init(&mutex,NULL);
printf ("hoofdprogramma\n");
status = pthread_create ( &thread, NULL, c ,NULL);
if (status != 0) err_abort (status, "Create thread");
status = pthread_create ( &thread1, NULL, p ,NULL);
if (status != 0) err_abort (status, "Create thread");
pthread_join(thread,NULL);
pthread_join(thread1,NULL);
}
void *c(void *arg)
{
int t=0;
while(t<MAX)
{
if(teller>0)
{
printf("consument teller=%d %d \n",teller, buf[teller-1]);
teller--;
t++;
}
}
}
void *p(void *arg)
{
int t=0;
while(t<MAX)
{
if(teller<N)
{
pthread_mutex_lock(&mutex);printf("locked"); // lock werkt niet
buf[teller]=t;
usleep(1); // slaap nu maar even lekker functie
teller++;
pthread_mutex_unlock(&mutex);printf("unlocked");// unlock werkt niet
t++;
}
}
return NULL;
} |
het lukt me dus niet, om de teller en/of buffer te beveiligen op het moment dat p fftjes slaapt, c gaat namelijk doodleuk verder terwijl de mutex gelocked is.. of hoort te zijn..