Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Sun1
    Registrato dal
    Feb 2006
    Messaggi
    81

    Dubbio su parola chiave 'static'

    Ciao a tutti,
    una domanda che mi affligge dopo aver riletto per l'ennesima volta definizioni associate alla parola chiave static. Ho sempre avuto un dubbio su questo concetto. Si parla di variabili di classe indipendenti quindi dall'istanza della classe stessa. Ok, chiaro...ma in un'applicazione web, ad esempio, dove ad accedere sono n utenti, se il primo utente associasse ad esempio ad una variabile statica il valore 10, il secondo utente che legge tale dato, si troverebbe 10 come valore di quella variabile?
    Scusate la domanda, forse per molti banale.

  2. #2
    Di che linguaggio stiamo parlando? Inoltre, per l'esempio della web application, dipende anche da come è configurato il tutto (se si tratta di uno script PHP o di un CGI ad ogni richiesta è come se l'applicazione ripartisse da zero, con altre configurazioni/application server invece no).
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di Sun1
    Registrato dal
    Feb 2006
    Messaggi
    81
    Originariamente inviato da MItaly
    Di che linguaggio stiamo parlando? Inoltre, per l'esempio della web application, dipende anche da come è configurato il tutto (se si tratta di uno script PHP o di un CGI ad ogni richiesta è come se l'applicazione ripartisse da zero, con altre configurazioni/application server invece no).
    In particolare mi riferisco a Java. La stessa domanda mi sorge ad esempio con il Singleton: l'istanza della classe viene condivisa anche su utenti diversi?

  4. #4
    Per Java c'è un'apposita sezione, in cui ti sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Comunque, come detto, non è una questione strettamente di linguaggio, ma di come è implementato il server. Se il server avvia una nuova istanza della tua applicazione ad ogni richiesta allora le variabili static non sono condivise, altrimenti, se ad esempio c'è un thread per ogni richiesta nello stesso processo, le variabili static risultano condivise.

    Da quanto leggo riguardo alle servlet Java/TomCat, il modello è di tipo persistente, per cui tutte le servlet (e i relativi membri, non solo quelli statici) sono create all'avvio dell'application server e rimangono caricate in memoria, rispondendo via via alle richieste effettuate via HTTP. Per cui, non solo le variabili static, ma anche i normali campi delle servlet sono persistenti tra le varie richieste (e quindi tra utenti diversi, se come utenti intendiamo "utenti della web application" e non "utenti del sistema operativo").

    In generale, comunque, in un'applicazione web basata su servlet dovresti stare attento ad usare variabili statiche, in quanto, se non adeguatamente protette da mutex & co., possono essere causa di problemi lavorando in multithreading.

    (disclaimer: di base di Java/TomCat non so nulla, ho semplicemente estrapolato da qui: http://stackoverflow.com/questions/3...multithreading )
    Amaro C++, il gusto pieno dell'undefined behavior.

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.