Avatar billede michelle_mikkelsen Nybegynder
12. februar 2004 - 14:12

Semaphore_Problem .Køere ikke helt!

jeg kan ikke få sempoherene til at virke...når jeg kompliere får jeg en del fejl(tolkningsfejl) om at systemet ikke kan genkende det semaforer jeg har brugt.
er der nogen der fortælle mig hvad der er galt med denne program???

//Semaphore version;

#include <time.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>
#include <unistd.h>
#include <sys/ipc.h>
#include <sys/sem.h>
#include <sys/types.h>


const int MAXKUNDER=3;
const int MAXNUMMER=6;

int tur=0;
int billetNummer=0;

semaphore butikIkkeFuld;
semaphore broed, penge, bestilling;
semaphore billetMaskine;
semaphore ventekoe[MAXNUMMER];

void kunde()
{
  int mitNummer;
  wait(butikIkkeFuld);        //vent udenfor, hvis biks er fuld
  wait(billetMaskine);        //tag et nummer
  mitNummer=billetNummer;
  billetNummer=(billetNummer+1) %MAXNUMMER;
  signal(billetMaskine);
  wait(ventekoe[mitNummer]);  //vent til min tur
  signal(bestilling);          //afgiv bestilling
  wait(broed);                //koeb broed
  signal(penge);
  cout <<"takker " << mitNummer <<"\n";
  signal(butikIkkeFuld);      //forlad butikken

    return 0;
}

void bager()
  {
    int fyraften=0;
      while(fyraften<15) { //15=antal kunde processer
        cout <<"Naeste!\n";
        signal(ventekoe[fyraften%MAXNUMMER]);
        wait(bestilling);  //vent paa ordre
        cout <<"Vaersaa artig\n";
        signal(broed);
        wait(penge);
        fyraften++;
  }
}

int main() {
  int i;
  initialsem(butikIkkeFuld,MAXKUNDER);
  initialsem(billetMaskine,1);
  initialsem(broed,0);
  initialsem(penge,0);
  initialsem(bestilling,0);
  for(i=0;i<MAXNUMMER;i++){
    initialsem(ventekoe[i],0);
  }

  cobegin

  {
    kunde();kunde();kunde();
    kunde();kunde();kunde();
    kunde();kunde();kunde();
    kunde();kunde();kunde();
    kunde();kunde();kunde();
    bager();

  }
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester