Небезопасная версия writeTVar - PullRequest
3 голосов
/ 27 октября 2019

Я использую список TVar s, к которым имеют доступ несколько потоков. Однако в моем коде есть один раздел, критичный к производительности, который гласит:

 sequence [ atomically $ writeTVar tvar1 someValue | tvar1 <- listOfTVars ]

Гарантируется, что в тот момент, когда этот код будет достигнут, никакой другой поток не получит доступ к любой из TVar s в listOfTVars до тех пор, пока sequence не будет завершено ни чтением, ни записью.

Предоставляет ли GHC какие-либо примитивы, которые позволили бы мне "небезопасно" выполнять эти обновления значений? Моя цель состояла бы в том, чтобы сделать это быстрее, не выполняя STM-накладные расходы при совершении транзакции для каждой из них. Другими словами, мне не нужна атомарность, которую обеспечивает STM writeTVar;Вместо этого мне просто нужен быстрый способ обновить значения, хранящиеся в TVar s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...