Beispiel #1
0
//thread for read operations
void *threadreadlock(void *vargp)
{
	printf("%s\n", "Wait for reading!");
	rwlock_lockRead(&rwl); //read lock
    printf("%s%d\n", "Reading... Value: ", i); //read and print value
    //rwlock_getInfo(&rwl);
	rwlock_unlock(&rwl); //read unlock
    
    return NULL;
}
Beispiel #2
0
static void *reader1(void *arg) {  
  //Leselock anfordern
  rwlock_lockRead(&filelock);
  printf("Reader 1 working...\n");
  //Datei öffnen
  fp = fopen("testb.txt","rt");
  if (fp == NULL) {
    printf("Error trying to open testb.txt\n");
    return NULL;
  }  
  //Datei komplett auslesen
  int c;  
  while ((c = getc(fp)) != EOF) {
    putchar(c);        
  }    
  fclose(fp);
  printf("Reader 1 done.\n");
  rwlock_unlock(&filelock);
  return NULL;
}
Beispiel #3
0
static void *reader(void *arg) {      
  // 2 Runden
  int c;
  for(c = 0;c <2; c++){
    // Lese lock anfordern
    rwlock_lockRead(&varlock);
    printf("Reader printing...%u.\n",(unsigned int) pthread_self());
    int i;
    // Runde Nr., i und die Threadid ausgeben und zwischendurch warten
    for(i = 1; i <= 20 ; i++) {
      printf("c = %d i = %d count = %d  \t %u.\n", c, i, count,(unsigned int) pthread_self());
      if (i % 50) 
        sleep(rand() % 2);
    }    
    //Readlock weg
    rwlock_unlock(&varlock);
    printf("Reader waiting...%u\n",(unsigned int) pthread_self());
    sleep(1);
  }
  printf("Reader done..%u\n",(unsigned int) pthread_self());
   return NULL;
}