hi leute,
folgendes:
es geht um while schleife
count wird inkrementiert und mit zyklus verglichen.
aber spätentenstens wenn count = 4 ist wird doch if schleife nciht mehr ausgeführt?
weil zyklus[3] nur ist.
wenn wir zb. beim erstenmal durchlaufen
haben wir
zyklus[i] = zyklus[i] + z_typ[i];
zyklus[i] = 1 + 1
also zyklus[0] = 2;
- durchlauf:
if schleife nciht durchgeführt (da count = 2, aber zyklus[1] = 1)
und ab 3. durchlauf auch, die schleife wird nciht mehr durchgeführt. (nach meiner auffassung)
wo ist mein denkfehler?
(weil die while-schleife normal nie verlassen wird, und immer wieder ausgaben hat)
vielen dank
/\* Benoetigte Header fuer die Operationen mit Semaphoren \*/
#include
#include
#include
#include
/\* Standard Header fuer Zeitoperationen \*/
#include
/\*-----------------------------------------------------------------\*/
/\* Variablen Deklaration \*/
/\*-----------------------------------------------------------------\*/
#define SEMKEY 75 /\* Semaphor-Schluessel \*/
/\* File schedule.c enthaelt: \*/
int cleanup();
int main();
/\* File-lokale Variablen: \*/
int semid; /\* Zurueckgelieferte Sem-Id von Unix\*/
short initarray[4]; /\* Initarray fuer die Semaphoren \*/
unsigned int count; /\* Zaehlt die Durchlaeufe \*/
int z\_typ[4]; /\* Anzahl des Zykluszeiten, nach \*/
/\* denen eine Task wieder dran ist \*/
int zyklus [4]; /\* Startzyklus einer Task \*/
int i; /\* Laufvariable \*/
/\* struct sembuf ist eine Standard-Struktur aus 'sem.h'. \*/
/\* Hier werden zwei Felder definiert fuer die jeweiligen \*/
/\* P- und V-Operationen nach Dijkstra, die auf die \*/
/\* hier verwendeten Semaphoren angewendet werden. \*/
struct sembuf vsembuf;
int main()
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
/\* \*/
/\* Hauptprogramm \*/
/\* \*/
/\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*/
{
/\* Alle Signale von Unix werden auf cleanup() umgelenkt, \*/
/\* damit z.B. bei einem Break (Signal 2) die Semaphoren auch \*/
/\* wieder aus dem System entfernt werden. \*/
for (i = 0; i