En la actualidad, el tiempo de ejecución de OCaml no admite ejecutarse en varios núcleos en paralelo, por lo que un solo proceso OCaml no puede aprovechar múltiples núcleos. Es poco probable que esto cambie directamente; la dirección que los desarrolladores de OCaml están más interesados en tomar para un paralelismo incrementado parece permitir que múltiples tiempos de ejecución OCaml se ejecuten en paralelo en un solo proceso; esto permitirá pasar mensajes muy rápido, pero no permitirá que se ejecuten varios hilos en paralelo en una configuración de memoria compartida. El mayor problema es el recolector de basura; Hace algunos años, el equipo experimentó con un GC simultáneo, pero introdujo desaceleraciones inaceptables en el caso de un solo subproceso.
Hay un par de proyectos, concretamente Functory y OCamlnet, que proporcionan un paralelismo multinúcleo feliz mediante el uso de múltiples procesos.
En general, la comunidad OCaml tiende a favorecer los enfoques de paso de mensajes, lo que se puede hacer a través de los límites del proceso (como OCamlnet), sobre el multiproceso de memoria compartida de proceso único. Si su programa se puede dividir en múltiples procesos (¡muchos pueden!), Entonces sí, puede usar múltiples CPU de manera eficiente.
Véase también [esta pregunta relacionada sobre SO] (http://stackoverflow.com/questions/1302272/is-inria-going-to -add-concurrency-primitives-to-ocaml) – huitseeker