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