pthread семафор не отображать ничего на Linux

Я новичок в семействе потоков Linux.

Нет ошибок, нет предупреждений и вывод результатов.

Что вызвало это?

Я подозреваю, что семафор заблокирован или бесконечный цикл.

Кто-нибудь может увидеть неправильную логику в каком-то месте?

инициализация sem vlaue: bin_sem = 0, pile_sem = 0, fuel_sem = 0

sem_t bin_sem, pile_sem, fuel_sem;

int pile=0, fuel=0, wantedMineralVal=3, foundMineral=-1;


int isFound(void){
    srand(time(NULL));
    return (rand()%8+1);
}

void checkResource(){
    if(fuel!=0 && pile!=0)
        sem_post(&bin_sem); 
}

void *deliverFuel(void *args){
    while(foundMineral!=wantedMineralVal){      
        sem_wait(&fuel_sem);
        fuel+=24;
        checkResource();
    }
}

void *deliverPile(void *args){
    while(foundMineral!=wantedMineralVal){
        sem_wait(&pile_sem);
        pile+=12;
        checkResource();
    }
}

void *drilling(void *args){
    do{ 
        foundMineral =  isFound();
        if(pile == 0 || fuel==0){
            sem_post(&pile_sem);
            sem_post(&fuel_sem);
            sem_wait(&bin_sem);
        }

    pile-=2;
    fuel-=4;

    }while(foundMineral!=wantedMineralVal);

}

0 ответов

Другие вопросы по тегам