GHC реализует ряд важных расширений Haskell для поддержки конкурентного и параллельного программирования. Сначала определим терминологию:
- Параллелизм означает выполнение программы на Haskell на нескольких процессорах с целью повышения производительности. В идеале это должно происходить незаметно, без изменения семантики.
- Конкурентность означает реализацию программы с помощью нескольких потоков, выполняющих операции ввода-вывода. Хотя конкурентная программа на Haskell может выполняться на параллельной машине, основная цель использования конкурентности — не повышение производительности, а то, что это самый простой и прямой способ написать программу. Поскольку потоки выполняют операции ввода-вывода, семантика программы неизбежно является недетерминированной.
GHC поддерживает и конкурентность, и параллелизм.