Visualizzazione dei risultati da 1 a 4 su 4

Discussione: (nome oggetto).flush()

  1. #1

    (nome oggetto).flush()

    Ciao a tutti.
    vorrei sapere perché si usa questo comando.
    Ho cercato un po' su internet e mi sembra di avere capito che si usa per trasferire tutti i dati sul file specificato e svuotare la memoria. dico bene?

    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Riguarda i meccanismi di bufferizzazione.
    Alcuni oggetti utilizzano sistemi di bufferizzazione per migliorare le prestazioni in scrittura (poco importa che si stia scrivendo in un file su disco, su una socket o altrove).
    La bufferizzazione consiste nell'immagazzinare in memoria in un buffer i dati che vengono scritti fin quando il buffer non si riempie. Solo quando il buffer è pieno i dati vengono fisicamente trasferiti a destinazione. Questo migliora le performance perchè è più performante fare poche scritture di molti byte piuttosto che fare molte scritture di un (o pochi) byte.

    Ovviamente, visto che la scrittura effettiva avviene solo quando il buffer è pieno, si rischia di non effettuare la scrittura per i pochi byte finali o per tutti i byte se questi sono meno della capienza del buffer (in quanto, se il buffer non è pieno, non viene scritto). In questi casi, si forza appunto un flush() che, in sostanza, dice al sistema di bufferizzazione di scrivere forzatamente i byte presenti nel buffer anche se questo non è pieno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    grazie leleFT, gentilissimo....
    avevo intuito un qualcosa del genere... quindi và a fare una forzatura trasmettendo i dati a destinazione anche qualora il buffer non è pieno.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Esatto.
    Generalmente lo si usa come ultima istruzione prima della chiusura dell'output, in modo da forzare la scrittura degli ultimi byte inviati (che potrebbero, appunto, non riempire il buffer).

    Pseudocodice:

    codice:
    try {
       apri_canale_output
    
       while( ci_sono_dati_da_scrivere ) {
          scrivi_su_output
       }
    
       flush()
    
    } catch (Exception e) {
       ...
    } finally {
    
       chiudi_canale_output
    
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.