performance: probabilmente non. I thread di OCaml non forniscono l'esecuzione parallela, sono solo un modo per strutturare il tuo programma. Il runtime di OCaml non è thread-safe, quindi l'unico codice che potrebbe essere eseguito in parallelo a un singolo thread di OCaml sarà interfacciato con il codice C (senza callback a OCaml!).
Per quanto riguarda l'implementazione, esiste un mutex in fase di esecuzione, che viene rilasciato quando si richiama il blocco dei primitivi C, e potrebbe anche essere rilasciato quando si chiamano funzioni C che svolgono un lavoro significativo.
Facilità di implementazione: non cambierebbe il mondo. Avresti il comfort di OCaml e una libreria simile al pthread sul lato. Se stai cercando cose nuove da scoprire sfruttando ciò che hai imparato su OCaml, ti consiglio di utilizzare Jocaml. Entra in sincronia e in sincronia con OCaml, ma c'è stata una (ri-implementazione) abbastanza recente, e anche quando è leggermente fuori sincrono, è molto divertente e una prospettiva completamente nuova dei programmi concorrenti.
Jocaml è implementato su OCaml. Ciò che con il tempo di esecuzione non è concorrente e tutto, sono quasi sicuro che utilizza processi separati e passaggi di messaggi. Ma per l'applicazione che hai menzionato dovrebbe essere in grado di fare bene.
fonte
2010-07-14 14:54:49
JoCaml fornisce un (molto bello) modello di concorrenza basato sul messaggio che passa al programmatore. Il tuo programma JoCaml di base viene eseguito in un singolo runtime Caml; sotto il cofano, i messaggi vengono inviati tra i thread di quel runtime. JoCaml offre anche servizi per la programmazione distribuita: i messaggi possono essere inviati in modo trasparente tra runtime che non hanno nemmeno bisogno di essere eseguiti sulla stessa macchina. Se si utilizza questo, non vi è alcuna leva speciale del caso speciale in cui i runtime vengono eseguiti sulla stessa macchina. – Gilles