Параллельный Haskell

  • Основы Concurrent Haskell

    • Concurrent Haskell расширяет Haskell 98 для поддержки параллелизма. 
    • Основные концепции включают примитивный тип MVar и возможность создания параллельных потоков с forkIO. 
  • Параллелизм и синхронизация

    • Предоставляет полезные абстракции, такие как неограниченные каналы и семафоры. 
    • Потоки Haskell имеют низкие накладные расходы и сопоставляются с реальным количеством потоков ОС. 
  • Программная транзакционная память (STM)

    • Повторно использует примитивы Haskell для создания STM. 
    • Избегает использования MVar в пользу TVar и предоставляет примитивы retry и OrElse. 
    • STM monad позволяет изменять переменные в транзакциях, реализован в GHC. 
  • Пример банковского приложения

    • Традиционный подход к транзакциям в Haskell может привести к условиям гонки. 
    • Блокировки используются для предотвращения одновременного выполнения нескольких переводов. 
    • STM monad решает проблему гонок, обеспечивая атомарность транзакций. 
  • Атомарные транзакции и STM monad

    • STM monad позволяет записывать атомарные транзакции, которые полностью завершены или выглядят так, как будто не выполнялись. 
    • Функция atomically гарантирует, что переменные не будут изменены другими транзакциями. 
    • Дополнительные улучшения включают повторные попытки и проверку бизнес-логики. 
  • Рекомендации

    • STM monad является эффективным инструментом для обеспечения корректности сложных операций. 

Полный текст статьи:

Параллельный Haskell — Википедия

Оставьте комментарий

Прокрутить вверх