[so] printf

Bogdan Butnaru so@atlantis.cs.pub.ro
Sun, 30 Nov 2003 23:23:58 +0200


Chestia cu fflush(stdout) e de baza la multithreading. Daca folosesti
C++, merge si "cout<<orice<<endl<<flush;". Poti sa-ti definesti macrouri
sau functii speciale pentru chestia asta (au am o functie care imi si
afiseaza PID-ul inaintea fiecarei linii, sa stiu de la cine e mesajul).

Mai poti sa faci o chestie: definesti un mutex, comun in toata aplicatia.
De fiecare data cand afisezi ceva, iei intai mutexul, afisezi, faci
flush, si apoi dai drumul mutexului. Ideea e ca afisajul (consola) e o
resursa comuna, si tre' sa faci sincronizarea si la accesul ei. Toata
treaba asta la mine e intr-o functie msg, pe care o folosesc intotdeauna
la afisare.

On Sun, 30 Nov 2003 12:35:48 +0200, "Diana" <diana.giurca@rdslink.ro>
said:
> Am urmatoarea problema: cand afisez un mesaj mi se intampla uneori sa il
> afiseze acelasi thread de doua ori, desi printf-ul se executa o singura
> data. Sunt convinsa ca se executa o singura data pentru ca am initializat
> un contor si l-am incrementat in printf; concluzie: imi afiseaza de mai
> multe ori avand contorul 1. Daca mai pun un printf imediat dupa printf-ul
> problematic, am observat ca nu se mai intampla sa mi-l afiseze de mai
> multe ori. Oricum, chestia asta este complet aleatoare..
> Stie cineva cum s-ar putea rezolva aceasta problema (in alt mod decat sa
> mai pun cate un printf in plus dupa fiecare printf de care am nevoie)?
-- 
  Bogdan Butnaru
  bogdanb@fastmail.fm

-- 
http://www.fastmail.fm - Access your email from home and the web