Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Thread: Attesa Attiva


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 9 risposta/e

#1
2bet

2bet

    Advanced Member

  • Utente
  • StellaStellaStella
  • 56 Messaggi:
Qualcuno potrebbe chiarirmi il concetto di Attesa Attiva nei thread?
ma soprattutto.... il metodo sleep lascia in attesa attiva il thread? e il metodo wait? ho letto di tutto ma nn c'è niente che mi chiarisce bene queste cose.... spero in un vostro aiuto.....STO SCEMUNENN! :help:


Sii tu stesso il cambiamento che vorresti nel mondo...
http://www.myspace.com/2betto

#2
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:

Qualcuno potrebbe chiarirmi il concetto di Attesa Attiva nei thread?
ma soprattutto.... il metodo sleep lascia in attesa attiva il thread? e il metodo wait? ho letto di tutto ma nn c'è niente che mi chiarisce bene queste cose.... spero in un vostro aiuto.....STO SCEMUNENN! :help:


Attesa attiva significa che il thread attende, ma senza liberare il processore. Questa si realizza in genere mediante un ciclo vuoto, che non esegue alcuna operazione fin quando non si verifica una condizione. Il risultato è che l'esecuzione del thread non va avanti, ma il thread comunque fa qualcosa (esegue il ciclo) e resta in esecuzione sul processore.

Il metodo sleep è un metodo della classe Thread, che realizza una sorta di attesa attiva... In pratica se hai un thread chiamato tr, invocando tr.sleep(10000), il thread ritarda di circa 10000 millisecondi, ciè 10 secondi.

Per attesa passiva si intende un meccansimo che consente al thread di arrestarsi e di liberare il processore. Questa attesa si realizza mediante il metodo wait(). Se hai un thread tr, invocando tr.wait() il thread si metterà in attesa passiva. Quando su di un altro thraed sarà invocato il metodo notifyAll(), tutti i thread in attesa passiva, si riattiveranno.

Sono stato molto sintetico, ma spero di esserti stato d'aiuto, se hai altri dubbi chiedi pure.

#3
the_boss89

the_boss89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 100 Messaggi:
e invece il metodo join()??? :huh:
non ho trovato da nessuna parte se tale metodo mette in attesa attiva o passiva...so solo ke non fa andare avanti l'esecuzione del programma fin quando il thread ke lo ha invocato non ha terminato tutte le proprie operazioni
es: Thread t1;
t1.join();
se ho un altro thread intanto concorrente a t1, ke kiamerò t2, t2 deve aspettare la fine di t1 per poter riprendere la sua esecuzione...ma sta in attesa attiva o passiva??? :scratch:
secondo me aspetta la fine di t1 e intanto rilascia il mutex e pertanto sta in attesa passiva....non so, voi ke ne pensate???
:doofy:
Spesso il margine tra successo e insuccesso è semplicemente la volontà di fare lo sforzo in più, percorrere il chilometro in più, sopportare la fatica in più!

#4
IbraAleKadabra

IbraAleKadabra

    Newbie

  • Utente
  • StellaStellaStella
  • 1194 Messaggi:

Il metodo sleep è un metodo della classe Thread, che realizza una sorta di attesa attiva... In pratica se hai un thread chiamato tr, invocando tr.sleep(10000), il thread ritarda di circa 10000 millisecondi, ciè 10 secondi.


E' vero ke mette a "dormire" il Thread per un tempo ke può arrivare a 10 sec ma qlla nn è attesa attiva!!! L'attesa attiva l'hai spiegata molto bene prima ed è da evitare assolutamente in qnt mantiene attivo il processore ke può essere utilizzato dagli altri Thread per effettuare alkune operazioni!!!
"Puntalo ke te lo salti e se sbaglii fa niente, riprenditi il pallone e ripuntalo.. Se qualcuno ti dice qualkosa, dimmelo ke me la vedo io!!!"
Grazie di tutto Mister..

Immagine inviata

#5
IbraAleKadabra

IbraAleKadabra

    Newbie

  • Utente
  • StellaStellaStella
  • 1194 Messaggi:

e invece il metodo join()??? :huh:
non ho trovato da nessuna parte se tale metodo mette in attesa attiva o passiva...so solo ke non fa andare avanti l'esecuzione del programma fin quando il thread ke lo ha invocato non ha terminato tutte le proprie operazioni
es: Thread t1;
t1.join();
se ho un altro thread intanto concorrente a t1, ke kiamerò t2, t2 deve aspettare la fine di t1 per poter riprendere la sua esecuzione...ma sta in attesa attiva o passiva??? :scratch:
secondo me aspetta la fine di t1 e intanto rilascia il mutex e pertanto sta in attesa passiva....non so, voi ke ne pensate???
:doofy:


beh.. join() sospende il thread corrente fino a quandonon termina l'esecuzione del thread usato come destinatario del metodo..
join va applicato al thread di cui vogliamo aspettare la terminazione.
Quindi se in un main abbiamo un thread t1 e uno t2 e a entrambi applikiamo la joiN aspettiamo ke entrambi i Thread Finiscano la loro esecuzione e poi si continua col normale flusso d esecuzione del Main...
Sxo d esserti stato utile :D
:ciao:
"Puntalo ke te lo salti e se sbaglii fa niente, riprenditi il pallone e ripuntalo.. Se qualcuno ti dice qualkosa, dimmelo ke me la vedo io!!!"
Grazie di tutto Mister..

Immagine inviata

#6
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:

Il metodo sleep è un metodo della classe Thread, che realizza una sorta di attesa attiva... In pratica se hai un thread chiamato tr, invocando tr.sleep(10000), il thread ritarda di circa 10000 millisecondi, ciè 10 secondi.


E' vero ke mette a "dormire" il Thread per un tempo ke può arrivare a 10 sec ma qlla nn è attesa attiva!!! L'attesa attiva l'hai spiegata molto bene prima ed è da evitare assolutamente in qnt mantiene attivo il processore ke può essere utilizzato dagli altri Thread per effettuare alkune operazioni!!!


Si è vero, mi sono confuso... Sleep sospende il thread, questo però non rilascia il mutex.

#7
IbraAleKadabra

IbraAleKadabra

    Newbie

  • Utente
  • StellaStellaStella
  • 1194 Messaggi:

Il metodo sleep è un metodo della classe Thread, che realizza una sorta di attesa attiva... In pratica se hai un thread chiamato tr, invocando tr.sleep(10000), il thread ritarda di circa 10000 millisecondi, ciè 10 secondi.


E' vero ke mette a "dormire" il Thread per un tempo ke può arrivare a 10 sec ma qlla nn è attesa attiva!!! L'attesa attiva l'hai spiegata molto bene prima ed è da evitare assolutamente in qnt mantiene attivo il processore ke può essere utilizzato dagli altri Thread per effettuare alkune operazioni!!!


Si è vero, mi sono confuso... Sleep sospende il thread, questo però non rilascia il mutex.


Non ricordo se effettivamente cosi!!!
"Puntalo ke te lo salti e se sbaglii fa niente, riprenditi il pallone e ripuntalo.. Se qualcuno ti dice qualkosa, dimmelo ke me la vedo io!!!"
Grazie di tutto Mister..

Immagine inviata

#8
the_boss89

the_boss89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 100 Messaggi:
aspè ma sleep sì...è una attesa attiva!

Si è vero, mi sono confuso... Sleep sospende il thread, questo però non rilascia il mutex.

infatti se il mutex nn viene rilasciato si ha una attesa attiva.....

@IbraAleKadabra: si mi trovo con quello ke tu hai detto sulla join(), ma io volevo solo sapere se mi mette il thread in una attesa attiva o in una attesa passiva...
Spesso il margine tra successo e insuccesso è semplicemente la volontà di fare lo sforzo in più, percorrere il chilometro in più, sopportare la fatica in più!

#9
IbraAleKadabra

IbraAleKadabra

    Newbie

  • Utente
  • StellaStellaStella
  • 1194 Messaggi:
Io so ke l'attesa attiva si fa solo con while(!), tutto il resto so k sono tutte attese passive!!!
"Puntalo ke te lo salti e se sbaglii fa niente, riprenditi il pallone e ripuntalo.. Se qualcuno ti dice qualkosa, dimmelo ke me la vedo io!!!"
Grazie di tutto Mister..

Immagine inviata

#10
ildiabolico

ildiabolico

    Advanced Member

  • Utente
  • StellaStellaStella
  • 405 Messaggi:
Ragazzi non vi scimunite è così:

I metodi della classe Thread Sleep() Sleep(long d) Wait() Wait(long d) sono ideati per mettere il thread in ATTESA PASSIVA.
L'attesa attiva è da evitare in quanto non evitarla equivale alla fucilazione sul posto in sede d'esame :aufsmaul:


La differenza tra sleep() e Wait() è che :
-->la sleep addormenta il thread NON rilasciando il Mutex. //Il thread riprende a lavorare dopo aver ricevuto un InterrupterException.
-->la wait fa aspettare il thread RILASCIANDO il Mutex.
// se vi ricordate abbiamo usato la wait nel terzo contest se no non si potevano gestire le persona che aspettavano fuori dalla discoteca perchè la risorsa risultava sempre occupata nel caso in cui avessimo usato una spleep


Le rispettive varianti che ricevono un paramentro( se non erro un long) servono solo a settare un timer che dice "Il tempo in Long è finito? si è finito Ok Thread riprenditi e continua a lavorare indipendentemente dal resto".


Per la Join invece il thread che chiama il metodo Join mette in pausa tutti gli altri: quando il thread che ha chiamato Join ha smesso di lavorare allora tutti quelli che sono stati messi in pausa riprendono la loro normale esecuzione.


And That's All Folcks prrr
Rappresentante degli studenti al Consiglio Didattico di Ing. Informatica
Rappresentante degli studenti in Commissione Didattica di Ing. Informatica
Mail >> darioderosa89@gmail.com




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi