1. FE_TONEAREST - Na najbližu vrednost (podrazumevano),
2. FE_DOWNWARD - prema ,
3. FE_UPWARD - prema ,
4. FE_TOWARDZERO - prema nuli.
Ukoliko koristite VC++, zaboravite na ovo, a ako koristite GNU prevodioce, prilikom prevođenja neophodno je zadati direktivu -frounding-math.
Pozivom funkcije fesetround() sa jednom od četiri navedene konstante kao parametrom podešava način zaokruglivanja za naredne matematičke operacije u pokretnom zarezu do sledeće promene pozivom te funkcije. Koliko sam imao prilik da vidim, funkcija fesetround() nije bezbedna za niti, tj. ne deluje samo na nit u kojoj je pozvana, nego na ceo proces, ali ne i na druge procese.
Ja shvatam da se na taj način kaže procesoru kako da radi sa narednim operacijama u pokretnom zarezu, a da sam procesor ne zna šta je to nit, a šta proces. Međutim, muče me dva pitanja:
A) Da li po pitanju neremećenja drugih procesa na sistemu pozivom te funkcije mogu mirno da spavam? Kako se obezbeđuje da poziv te funkcije ne utiče na druge procese na sistemu? Ako je stvar u tome da se to stanje na neki način snimi prilikom prekida izvršavanja procesa i posle restaurira kada na njegovo izvršavanje ponovo dođe red, kako to onda može da funkcioniše ako se taj drugi proces stalno izvršava, bez prekida (na višejezgarnom procesoru)?
B) Mogu li se niti sinhronizovati po pitanju zaokrgljivanja (da svaka menja režim samo za sebe) bez korišćenja mjuteksa? Recimo, da postoji neka funkcija koja se poziva kada nit ide na spavanje, koja bi sačivala stanje i neka funkcija koja se poziva kada se nit probudi, koja bi restaurirala stanje? Ako pozivanje ove funkcije zaista ne utiče na druge procese, ne bi trebalo da postoji fundamentalan razlog da se to ne može obezbediti za niti.