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);
}