Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Attenti a Poco F7: può essere il best buy del 2025. Recensione
Attenti a Poco F7: può essere il best buy del 2025. Recensione
Poco F7 5G, smartphone che punta molto sulle prestazioni grazie al processore Snapdragon 8s Gen 4 e a un display AMOLED da ben 6,83 pollici. La casa cinese mantiene la tradizione della serie F offrendo specifiche tecniche di alto livello a un prezzo competitivo, con una batteria generosissima da 6500 mAh e ricarica rapida a 90W che possono fare la differenza per gli utenti più esigenti.
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale
Abbiamo provato per molti giorni il nuovo Z Fold7 di Samsung, un prodotto davvero interessante e costruito nei minimi dettagli. Rispetto al predecessore, cambiano parecchie cose, facendo un salto generazionale importante. Sarà lui il pieghevole di riferimento? Ecco la nostra recensione completa.
The Edge of Fate è Destiny 2.5. E questo è un problema
The Edge of Fate è Destiny 2.5. E questo è un problema
Bungie riesce a costruire una delle campagne più coinvolgenti della serie e introduce cambiamenti profondi al sistema di gioco, tra nuove stat e tier dell’equipaggiamento. Ma con risorse limitate e scelte discutibili, il vero salto evolutivo resta solo un’occasione mancata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-12-2010, 16:11   #1
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
[C] printf - single Thread e multi Thread

Ciao a tutti!

Mi sono imbattuto in un problema riguardante la funzione printf() in C sotto ambiente linux.
Il problema è il seguente; Considerando la seguente istruzione:
printf("ciao");
  • single-Thread: quando faccio la printf, questa viene immediatamente visualizzata sul terminale;
  • multi-Thread: quando faccio la printf in ciascun thread, la visualizzazione dei caratteri nel terminale avviene solamente quando il buffer stdout si è riempito completamente; se invece aggiungo il carattere \n nella printf - printf("ciao\n") - in questo modo la stampa a video avviene immediatamente;

Qualcuno sa spiegarmi il motivo?

Grazie in anticipo!
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
Old 20-12-2010, 18:23   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
in genere printf fa un flush ogni volta che riceve un carattere newline o quando è necessario (ad esempio il buffer è pieno, o l'applicazione sta per terminare o stai per fare una lettura da tastiera)

non sono sicuro che questo comportamento sia standard, comunque se il buffering è un problema puoi sempre eliminarlo con
Codice:
setbuf(stdout, NULL);
ps: comunque non credo la printf sia thread safe
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 22-12-2010, 10:07   #3
nico88desmo
Senior Member
 
Iscritto dal: Jul 2006
Messaggi: 1568
Da quanto ho letto la printf non è thread-safe.

Il dubbio è nato in quanto ho pensato che anche facendo un ciclo for piuttosto grande, al cui interno faccio la printf senza il carattere newline, teoricamente non dovrebbe stampare nulla finchè o appunto il buffer è pieno oppure fintanto che il ciclo non sia terminato.

Invece, con questa porzione di codice per esempio
Codice:
   int i=0;
   for (i=0; i<1000000000; i++) {
      printf("ciao");
   }
la stampa della stringa "ciao" avviene ad ogni ciclo.

L'unica spiegazione plausibile è che la printf non è thread-safe, per cui ha un comportamento anomalo.
nico88desmo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Attenti a Poco F7: può essere il best buy del 2025. Recensione Attenti a Poco F7: può essere il best buy...
Recensione Samsung Galaxy Z Fold7: un grande salto generazionale Recensione Samsung Galaxy Z Fold7: un grande sal...
The Edge of Fate è Destiny 2.5. E questo è un problema The Edge of Fate è Destiny 2.5. E questo ...
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
IA ed etica: Fastweb+Vodafone fra le pri...
Pannelli solari nuovi o riciclati? Quest...
Instagram cambia le regole per i Live: n...
Windows 11 SE addio: Microsoft stabilisc...
Kali Linux più facile su macOS gr...
È la fine per le antenne 5G? Al l...
WhatsApp, una taglia da 1 milione di dol...
Sembrava spacciato, poi una bici elettri...
Apple Watch Series 1 diventa obsoleto: a...
ho. Mobile, upgrade a 250 GB senza sovra...
Reddit non avrà post a pagamento,...
Mercato auto in crisi in Italia: i priva...
Adesso puoi parlare con l'IA su WhatsApp...
AGCM bastona Shein: stangata da un milio...
Vendite di veicoli completamente elettri...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:28.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v