Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Delphi] Thread

    Leggo nella documentazione che il metodo Sleep() ferma l'esecuzione dell'intero programma e non del solo thread nel quale viene invocato. E' corretto?
    E' possibile mandare in pausa in thread per n secondi senza che l'intero programma si arresti?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,304
    Originariamente inviato da denis76
    Leggo nella documentazione che il metodo Sleep() ferma l'esecuzione dell'intero programma e non del solo thread nel quale viene invocato. E' corretto?
    E' possibile mandare in pausa in thread per n secondi senza che l'intero programma si arresti?
    No, non è corretto: la chiamata a Sleep pone in pausa il thread corrente che la chiama, tant'è che molto spesso si usa invocare la procedura all'interno di quei thread che rimangono a lungo in esecuzione, compiendo dei cicli, magari per valutare quando eseguire una determinata azione a fronte del raggiungimento di un orario o di un'altra condizione, per quanto sia più indicato - se possibile - invocare le funzioni API Wait... per legare l'attesa alla disponibilità di un oggetto specifico.

    Comunque sia, Sleep pone in attesa il thread chiamante. E' ovvio che se invochi la procedura all'interno dell'evento OnClick di un pulsante, ad esempio, il thread che viene messo in attesa è quello principale dell'applicazione, che fornisce il contesto nel quale è stato invocato l'evento citato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Associato a questo problema ho un secondo problema da risolvere:
    Un Thread invoca una funzione contenuta in una cerca classe. Il tempo impiegato dal thread per la completa esecuzione di tale funzione non è prevedibile.
    Ad un certo punto un secondo thread deve poter terminare il primo thread anche se esso non è riuscito a concludere la procedura. Come posso fare?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,304
    Originariamente inviato da denis76
    Un Thread invoca una funzione contenuta in una cerca classe. Il tempo impiegato dal thread per la completa esecuzione di tale funzione non è prevedibile.
    Ad un certo punto un secondo thread deve poter terminare il primo thread anche se esso non è riuscito a concludere la procedura. Come posso fare?
    Tutto dipende da ciò che costituisce l'operazione dalla durata imprevedibile.
    Di cosa si tratta?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.