Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    19

    sincronizzazione su una variabile globale è possibile?

    ciao sono Marco e sono nuovo di questo forum, spero di essere benvenuto.
    Sono abbastanza pratico con java ed ora sto iniziando ad imparare js e html per fare delle app web 2.0.
    Come molti di voi sapranno in java più thread che concorrono alla stessa risorsa vanno sincronizzati, ora ho un dubbio ma ciò vale anche per js? mi spiego meglio:

    ho due bottoni inizia e finisci, il primo inizia un operazione in loop senza mai fermarsi fin quando non viene premuto finisci. Quello che ho pensato è di mettere una variabile globale e di fare il controllo su di essa nella funzione inizia e di settare il valore nella funzione finisci, in modo da terminare il ciclo.

    è lecita questa cosa? oppure potete offrirmi qualche altra soluzione?

    PS inoltre mi date delucidazioni riguardo le variabili globali. Dove vanno messe(prima di tutte le funzioni del js o nel file html)?


    grazie mille

  2. #2
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    javascript è single-thread e, se ho capito bene la tua domanda, non puoi interrompere il loop nel modo che hai teorizzato.

    Quando esegui delle operazioni potenzialmente bloccanti (come un loop) o onerose dal punto di vista computazionale il browser impegnerà quell'unico thread, bloccandolo di fatto nella ricezione degli altri eventi o nella responsività dell'interfaccia.

    Quindi un modo per bloccare un loop in maniera sicura e ammesso sia fattibile nel tuo caso, potrebbere essere quello di dividere le operazioni in miniblocchi (chunks) e di creare un tempo di attesa tra l'esecuzione di un blocco ed il successivo (setTimeout), in modo tale da non occupare completamente il thread per tutto il tempo ma lasciandolo ciclicamente inattivo per pochi istanti in modo da recepire l'evento di interruzione del task.

    L'interruzione consisterà nel fare un clearInterval sul timeout che temporizza la chiamata del chunk successivo.
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  3. #3
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    E' vero da Firefox 3.5 ci sono dei worker threads, ma in genere finora se avvii un loop infinito, ti blocca tutto il browser, quindi non potresti neanche cliccare l'altro bottone.

    Quindi oppure scegli i worker threads - che però non sono ancora supportato da tutti i browser - oppure usi setTimeout()

    codice:
    function myfunction()
    {
        // my code
        if (active) setTimeout('myfunction()', 100);
    }

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    19
    l'applicazione è per un cellulare, ma immagino che siano abbastanza aggiornati sulle api. Cmq volevo sapere che cos'è un chunk? come si specifica?
    ho appena letto la timeout( sono un niubbo niubbo) e la trovo interessante. nel ciclo non è possibile mettere una condizione che valuti attenda il click dell'altro bottone?

  5. #5
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    Originariamente inviato da marketie
    cos'è un chunk?
    è solo un termine che indica genericamente un blocco, non corrisponde a nessun costrutto effettivo in js. Il blocco te lo crei tu in base alla tua applicazione, è una suddivisione parziale dell'operazione bloccante


    prova a vedere se questa pagina può tornare utile
    http://www.codeproject.com/Articles/...splay=PrintAll
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

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.