Come follow-up di my altra domanda , se si dovesse costruire un traduttore generico da una lingua che ha supporto (sia con una libreria esterna o altro) per un comportamento asincrono a un linguaggio che può o meno supportare nativamente (usiamola C come esempio), quindi è una traduzione semanticamente equivalente di un callback asincrono per richiamare semplicemente la funzione di callback prima di tornare / completare dal successore? Nota che nell'esempio che seguo mi riferisco a JavaScript come linguaggio che supporta il comportamento asincrono anche se non supporta nativamente il comportamento asincrono, ma in pratica viene usato frequentemente attraverso alcune librerie.
Ad esempio, dato il seguente programma JavaScript (da questo semplice esempio di una funzione JavaScript asincrona )
window.setTimeout(function() {
console.log("World");
}, 1000);
console.log("Hello");
sarebbe una traduzione semanticamente equivalente di quanto sopra per usare fork
in quanto sopra tale che il processo figlio dorme per 1000 millisecondi e quindi invoca le stampe "World"
a stdout
, e nel processo genitore continua con la stampa "Hello"
a stdout
? Ci sono problemi con questa traduzione specifica? Ciò comporta problemi di traduzione nel caso generale?
Si noti che la mia motivazione è trovare un modo per implementare un comportamento asincrono, non affidare l'implementazione dell'implementazione all'uso di una libreria.