ncurses & SIGWINCH
Karel Zak
zakkr na zf.jcu.cz
Pondělí Březen 22 10:38:48 CET 2004
On Mon, Mar 22, 2004 at 10:14:28AM +0100, Petr Vasicek wrote:
> > Vsechny cesty vedou k select().
> :)
>
> > Jinak v ncurses je pomerne dost funkci na jemnejsi pouzivani getch() --
> > to znamena nejen blokovane/neblokovane cteni (nodelay()). Je mozne i
> > cekani s nejakou casovou prodlevou. Kouknete se na wtimeout(). Ja jsem
> > pouzival cca 80 ms.
> >
> > Pokud pouzivate Gpm knihovnu pro mys a chcete i "citlivost" na pohyb
> > mysi pokud cekate na znak tak se mozna stejne dostanete k selectu().
>
> Dekuji. Vrtalo mi hlavou, proc v tom prikladu nikde nemaji nejakou variantu
> sleepu, prestoze pouzivaji nodelay(). Ted mi to nedalo a poradne jsem si ten
> zdrojak prosel znovu a zjistil, ze v jednom case: maji nepatrny napms(). :)
> Cili jeden problem s cekanim vyresen.
Pozor, ale -- obecne sleep/usleep/nanosleep pripadne v ncurses napms()
a vse podobne proste spi. A nic jineho. Zatimco veci zalozene na
select() spi a zaroven je lze probudit aktivitou na nejakem file
descriptoru. To je dost velky rozdil, ktery muze vasi aplikaci
udelat daleko vice efektivni a pritom rychle reagujici na pozadavky
uzivatele. Typicky pri napevno dane prodleve nejakym necoSleep() bude
napriklad rychly pohyb v menu bud pomaly a nebo z duvodu nejakeho
while() narocny na CPU. S resenim pomoci select a asi i wtimeout()
nebude uzivatel blokov a zaroven to nebude narocne na CPU.
Nemluve o tom, ze sleep/usleep mohou interne pouzivat signal ALARM coz
nemusi byt vzdy elegantni.
Karel
--
Karel Zak <zakkr na zf.jcu.cz>
http://home.zf.jcu.cz/~zakkr/
Další informace o konferenci Linux