Forum: Italian Ruby user group Eventi in successione: ordine non rispettato

Posted by Daneel Olivaw (daneel_olivaw)
on 2012-04-30 10:46
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.
Posted by Stefano Pigozzi (Guest)
on 2012-04-30 11:02
(Received via mailing list)
2012/4/30 Daneel Olivaw <daneel.olivaw.r@gmail.com>

> 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
Posted by Daneel Olivaw (daneel_olivaw)
on 2012-04-30 11:09
Stefano Pigozzi wrote in post #1058932:
> 2012/4/30 Daneel Olivaw <daneel.olivaw.r@gmail.com>
>
>> 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?
Posted by Stefano Pigozzi (Guest)
on 2012-04-30 11:14
(Received via mailing list)
2012/4/30 Daneel Olivaw <daneel.olivaw.r@gmail.com>

> 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.
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.