-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Sat, 15 Nov 2003, Andrei Pelinescu-Onciul wrote:

> Primesti cand esti scheduled urmatoarea data. Quanta curenta nu ti-o
> intrerupe, seteaza un flag ca ai primit SIG_xxx si data urmatoarea cand
> procesul tau se intoarce dintr-un syscall sau e scheduled din nou, il
> primeste.

Ok, asta imi raspunde la intrebare. Multumesc si tie si lui Teo.

Acum, de ce de fapt am intrebat de asta.

Problema mea initiala e ca intr-un main server loop (asa numesc eu acel 
loop principal, intr-un server TCP/IP single threaded, in care faci 
select/poll, apoi tratezi evenimentele si o iei de la capat) se apela la 
inceputul loop-ului "time(&now)". Ori acel loop la un server idle se 
executa de 50 de ori pe secunda (timeout-ul la select/poll e 20 
milisecunde), nu mai zic de unul incarcat (cazul normal) in care se 
executa mult mai des. "now" este folosit in loop pt a executa anumite 
lucruri programate (timers), a face un fel de garbage collection pe 
seturile de cache etc... Ori mi se pare prost gandit sa executi time() la 
fiecare loop deoarece acesta din cate stiu apeleaza la randul sau 
gettimeofday() (syscall) si apare un overhead nenecesar din moment ce m-ar 
interesa sa citesc timpul doar la intervala de o secunda. Si atunci ma 
gandeam ca o solutie aici este folosirea setitimer() cu ITIMER_REAL, care 
sa imi declanseze singal handlerul ALARM care sa updateze o variabila 
interna "read_time = 1" si apoi in server loop 
if (read_time) { time(&now); read_time = 0; }

Acum as apela si time(&now) din ALARM sighandler daca stiu ca e safe dar 
nu e neaparat necesar.

- -- 
Mihai RUSU                                    Email: [EMAIL PROTECTED]
GPG : http://dizzy.roedu.net/dizzy-gpg.txt    WWW: http://dizzy.roedu.net
                       "Linux is obsolete" -- AST
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQE/tpRuPZzOzrZY/1QRAhDlAKDn3i+kSav80iJlBSC84WSiT14vpACgqomj
3/7y3u6CiAbaUSO9Z1L4ooA=
=xAoA
-----END PGP SIGNATURE-----

--- 
Detalii despre listele noastre de mail: http://www.lug.ro/


Raspunde prin e-mail lui