Portál AbcLinuxu, 12. května 2025 15:40

Dotaz: Semafor, interní počítadlo

Jardík avatar 26.3.2010 19:18 Jardík | skóre: 40 | blog: jarda_bloguje
Semafor, interní počítadlo
Přečteno: 261×
Odpovědět | Admin
Semafory (co jsou v souboru semaphore.h) mají své "počítadlo" (nebo spíše mají hodnotu). Co se stane, když zavolám sem_post() na semafor, který má svou hodnotu na maximu? Přeteče počítadlo a semafor se "zblázní"?
Věřím v jednoho Boha.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

kouby avatar 26.3.2010 19:27 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Semafor, interní počítadlo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Semafor se nezblazni. Funkce ti vrati hodnotu -1 a errno ti nastavi na chybu ERANGE, tzn. ze selhala, citac se nebude inkrementovat. Je pak pouze na tobe aby jsi to osetril.
That's thirty minutes away. I'll be there in ten.
Jardík avatar 26.3.2010 19:58 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafor, interní počítadlo
Jó, já jsem si toho v tom manuálu nevšiml. V mém se ale píše EOVERFLOW.

BTW nevíte, jak čekat na 2 semafory současně? Jinak, než použitím třetího?
Věřím v jednoho Boha.
28.3.2010 03:31 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Semafor, interní počítadlo

Ono je to ještě trochu složitější, protože POSIXová verze manuálové stránky nespecifikuje chování při přetečení vůbec. A vlastně se ani u sem_init() nikde nemluví o tom, že by ta inicializační hodnota musela být maximální možná.

Co se čekání na dva semafory současně týká, je potřeba si nejdřív ujasnit, jak přesně by se to mělo chovat.

Jardík avatar 28.3.2010 01:36 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Semafor, interní počítadlo
Ještě dotaz, jelikož bych potřeboval mít počítadlo typu size_t, myslíte, že by bylo hodně pomalejší použít mutex a codition variable místo semaforu?
Věřím v jednoho Boha.
kouby avatar 26.3.2010 19:33 kouby | skóre: 27 | blog: init | Praha
Rozbalit Rozbalit vše Re: Semafor, interní počítadlo
Odpovědět | | Sbalit | Link | Blokovat | Admin
Více ke knihovním funkcím můžete nalézt v manuálu, třetí sekce. Viz. man 3 sem_post
That's thirty minutes away. I'll be there in ten.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.