В настоящее время среда выполнения OCaml не поддерживает параллельную работу на нескольких ядрах, поэтому один процесс OCaml не может использовать преимущества нескольких ядер. Это вряд ли изменится напрямую; направление, в котором разработчики OCaml больше всего заинтересованы в повышении параллелизма, похоже, позволяет нескольким средам выполнения OCaml работать параллельно в одном процессе; это позволит очень быстро передавать сообщения, но не позволит нескольким потокам работать параллельно в конфигурации с общей памятью. Основным зависанием является сборщик мусора; несколько лет назад команда экспериментировала с одновременным сбором мусора, но в однопоточном случае это привело к недопустимому замедлению.
Существует несколько проектов, а именно Functory и OCamlnet , которые обеспечивают многоядерный параллелизм с использованием нескольких процессов.
В целом, сообщество OCaml стремится отдавать предпочтение подходам передачи сообщений, которые могут осуществляться через границы процессов (как это делает OCamlnet), а не в однопроцессной многопоточности с разделяемой памятью. Если ваша программа может быть разделена на несколько процессов (многие могут!), Тогда да, вы можете эффективно использовать несколько процессоров.