Sto progettando un'applicazione che ha alcune funzionalità di scripting: l'applicazione host può chiamare gli script per eseguire alcune operazioni quando si verificano alcuni eventi. Per semplificare e agevolare i principianti, c'è un singolo thread per tutto: questo significa che se lo script chiama qualcosa che blocca, l'intera applicazione si blocca. Quindi, uso callback o polling per aspettare che un risultato di una chiamata di blocco sia pronto. Ciò che è brutto in questo approccio, è che una funzione che capita di chiamare una funzione di blocco, deve essere divisa in parti. Per il polling, avrei
function do something part 1
blabla
launch something lengthy
schedule do something part 2
end
function do something part 2
if result not ready then schedule do something part 2
use result
blabla
end
I callback sono solo leggermente migliori:
function do something
blabla
launch something lengthy, when done call callback
end
function callback
use result
blabla
end
Se uno ha diverse chiamate di blocco e ognuna dipende dal risultato del precedente, il codice diventa più brutto e brutto. Quello che sto cercando è per qualche linguaggio di programmazione che abbia un supporto integrato per questo modello. Qualcosa come
function do something
blabla
launch something lengthy
when done: //fictional keyword
use result
blabla
.... //more and more blocking calls
end
Naturalmente se ci sono soluzioni migliori sono lieto di ascoltare.