Replies (12)

  • @segfault, не бросать,а получать.
    более того получить его можно на любой прерываемой операции.
    а вот с uninterruptibleMask только где этот вызов
  • @qnikst, Перепутал да. Сяу про различия между простым и interruptibleMask. А можно вручную бросить асинхронное исключение, которое прервет выполнение даже внутри mask, или это только рантайм может?
  • @segfault, любое исключение прервет, если код на прерываемой операции.
  • @qnikst, Ну асинхронное (throwTo) то не прервет тред, которые выполняется внутри mask_, иначе в чем смысл mask вообще?
  • @segfault, если на прерываемой операции (например чтение пустого MVar) висит, то прервет, в этом и смысл
  • @qnikst, А как отличить прерываемые операции от непрерываемых
  • @segfault, никак
  • @qnikst, боялся этого ответа
  • @segfault, в ghc manual есть список для base и ghc. Но пользовательский код не описан
  • @qnikst, Типа можно самому добавлять револьверы?
  • @segfault, ну пишешь ты что-нить вроде:

    ```
    mySafeAction = putStrLn "hello world"
    ````

    Вроде все хорошо. А на самом деле handle, который использует putStrLn обёрнут в mvar. И если у тебя многопоточное окружение, то он может быть взят — и тебе может прилететь исключение. И это нигде не написано. Ну и плюс ты можешь писать allowInterrupts.
  • @segfault, хотел нагураться и спросить где ж ты был, когда я доклад про это делал, а потом вспомнил, что это было на FProgSPB и видео даже не было.