thread vs. process zählervariable
-
Hallo
Ich habe hier folgenden Code:
struct Toilet* new_Toilet(struct Cloakroom* cloakroom, unsigned int counter) { struct Toilet* this = malloc(sizeof(struct Toilet)); printf("Created Toilet %u\n", counter); this->cloakroom_ = cloakroom; this->number_ = counter; this->usage_counter_ = 0; this->max_usage_counter_ = 5; this->locked_by_ = 0; return this; }
sowie in der gleichen Datei unteranderm:
int Toilet_isDirty(struct Toilet* this, struct Process* process) { assert(this->locked_by_ == process); if (this->usage_counter_ >= this->max_usage_counter_) return 1; return 0; }
So nun zu meinem Problem:
Arbeite ich mit Theards statt Prozessen funktioniert alles super. Die isDirty wird von einer anderen C Datei aufgerufen und die gewünschten Prameter werden übergeben. Alles wird korrekt mitgezählt und ausgeführt. In dieser Funktion wird usage_counter hochgezählt:
void Toilet_use(struct Toilet* this, struct Customer* customer) { assert(this->locked_by_ == customer); printf("%s uses toilet %u.\n", customer->name_, this->number_); usleep(100*1000); ++this->usage_counter_; }
Auch bei den Prozessen wird alles aufgerufen usw.. Nur habe ich jetzt das Problem, dass die usage_counter nicht korrekt erhöht wird. In der isDirty ist der Wert der Variable immer 0. Was mache ich da flasch?
lg
-
Wie genau "arbeitest" du mit "Prozessen"!?
-
Die Process schaut so aus:
void Process_start(void (*function)(void*), void* this) { int pid = fork(); if(pid != 0) { function(this); } }