# Eventi in successione: ordine non rispettato

**URL:** <https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349>\
**Category:** IT\
**Created:** [April 30, 2012, 10:46am UTC](https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349 "2012-04-30T10:46:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Gurdipe\_D](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/g/b77776/32.png) [@Gurdipe\_D](https://www.ruby-forum.com/u/Gurdipe_D)\
**Post date:** [April 30, 2012, 10:46am UTC](https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349/1 "2012-04-30T10:46:59Z")

</div>

Buongiorno gente.  
Ennesima richiesta di aiuto… se non capite chiedete, oggi ho problemi  
nello scrivere chiaramente… dormito poco.

Devo far fare delle cose al programma (ma va?) e una parte di queste è  
gestita da un metodo… in pratica di solito questa funzione è lanciata  
dall’utente, mentre in questa situazione devo farla in automatico…  
niente di che, il codice è lo stesso, quindi col metodo risparmio righe.

In breve il codice è qualcosa del genere:

if controllo = valore

metodo\_in\_questione  
…  
[altro codice]  
…

end  
…  
[ecc. ecc.]  
…

Il problema però è che ciò che deve essere eseguito dal metodo deve  
essere fatto PRIMA del resto del codice, mentre così com’è il programma  
lancia il metodo e passa immediatamente ad eseguire il codice  
“sottostante”, esce anche dall’“if” e prosegue.

Ho provato a mettere degli “sleep” appena sotto il metodo sperando di  
far prendere tempo affinché le operazioni del metodo terminassero, ma mi  
mandano in pausa tutto, poi ho dato un’occhiata alla gestione del thread  
e delle attese, ma anche questa non è una soluzione…

Il sistema più semplice sarebbe di riscrivere tutto il codice che mi  
serve dentro l’“if”, ma mi scoccia… già ho tanto di quel codice  
duplicato e non ottimizzato che basta, una volta che posso e so come  
evitarlo, vorrei poter usare uno stile decente…

Qualcuno sa come dovrei fare?

Grazie in anticipo e a presto.

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [April 30, 2012, 11:02am UTC](https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349/2 "2012-04-30T11:02:22Z")

</div>

2012/4/30 Daneel O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> snip

scusa ma metodo\_in\_questione crea un thread? se si puoi usare #join. o  
forki un processo figlio? (anche in questo caso puoi aspettare il  
processo  
figlio nel padre).

ciao  
stefano

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [April 30, 2012, 11:09am UTC](https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349/3 "2012-04-30T11:09:07Z")

</div>

Stefano P. wrote in post #1058932:

> 2012/4/30 Daneel O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
> 
> > snip
> 
> scusa ma metodo\_in\_questione crea un thread? se si puoi usare #join. o  
> forki un processo figlio? (anche in questo caso puoi aspettare il  
> processo  
> figlio nel padre).
> 
> ciao  
> stefano

Temo di no, perché non sono riuscito a vedere un processo figlio, ma  
potrebbe anche darsi che stia usando il comando thread nel modo  
sbagliato.  
L’idea infatti sarebbe stata quella che hai suggerito, ma in ogni caso  
non mi sembra l’ottimale… o sbaglio?

---

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [April 30, 2012, 11:14am UTC](https://www.ruby-forum.com/t/eventi-in-successione-ordine-non-rispettato/219349/4 "2012-04-30T11:14:51Z")

</div>

2012/4/30 Daneel O. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)

> Temo di no, perch non sono riuscito a vedere un processo figlio, ma  
> potrebbe anche darsi che stia usando il comando thread nel modo  
> sbagliato.  
> L’idea infatti sarebbe stata quella che hai suggerito, ma in ogni caso  
> non mi sembra l’ottimale… o sbaglio?

se ho capito bene il problema metodo\_in\_questione deve bloccare  
l’esecuzione finch non torna, questo di solito avviene a meno che dentro  
metodo\_in\_questione deleghi lavoro a un thread o a un processo; in quel  
caso se vuoi comunque bloccare (per rendere l’esecuzione sincrona) devi  
utilizzare le primitive di sincronizzazione: #join con i thread e #wait  
con  
processi.
