В школе задали написать упражнение в котором есть доступ к общему 
ресурсу (через shmget и т.п.) X писателей и Y читателей которые в 
бесконечных циклах делают sleep и пишут/читают.
При этом заданы такие условия: писатель в данный момент может писать 
только один (что логично), а читателей читать может сколько угодно, но 
не тогда когда кто-нибудь пишет.
И если с писателями все просто:
    struct sembuf sb[2];
    sb[0].sem_num = 0;
    sb[0].sem_op = -1;
    sb[0].sem_flg = SEM_UNDO;
    sb[1].sem_num = 1;
    sb[1].sem_op =  1;
.....
    for (i = 0; ; ++i) {
        ....
        semop(sem_id, &sb[0], 1);
        strcpy((char*) data, buf);
        semop(sem_id, &sb[1], 1);
    }
То с читателями я что-то зашел в какой-то тупик. Читатели могут
читать одновременно, так что вроде бы при помощи semctl можно
было бы проверить нет ли в данный момент писателя и висеть,
но этого явно недостаточно:
а) что если сразу после semctl нарисуется писатель?
б) писатель не должен входить в критическую секцию
пока там кто-то читает
Напрашивается еще один семафор, но как сделать так чтобы
читатели могли входить в довольном количестве пока
не войдет писатель?
Что-то я запутался совсем... RFH (Request For Help!)

    
      Ответ на:
      
          комментарий
        от cvv 
  
    
      Ответ на:
      
          комментарий
        от dissident 
  


    
      Ответ на:
      
          комментарий
        от Legioner 
  

    
      Ответ на:
      
          комментарий
        от Die-Hard 
  
    
      Ответ на:
      
          комментарий
        от dissident 
  
    
      Ответ на:
      
          комментарий
        от dissident 
  
    
      Ответ на:
      
          комментарий
        от dissident 
  
    
        Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
      
Похожие темы
- Форум Семафоры (2005)
- Форум Вопрос по семафорам (2002)
- Форум семафоры (2006)
- Форум семафоры (2005)
- Форум Семафоры (2003)
- Форум Распределенный семафор (2013)
- Форум Семафоры POSIX (2001)
- Форум POSIX семафоры (2001)
- Форум Число семафоров (2000)
- Форум SystemV семафоры (2006)