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