Использование агентов для завершения побочных эффектов в транзакциях STM

Я знаю, что, как правило, не рекомендуется помещать функции с побочными эффектами в транзакции STM, поскольку они потенциально могут быть повторены и вызваны несколько раз.

Это происходит. Однако мне кажется, что вы можете использовать агентов, чтобы гарантировать выполнение побочных эффектов только после успешного завершения транзакции.

например,

(dosync
  // transactional stuff
  (send some-agent #(function-with-side-effects params))
  // more transactional stuff
  )

Это хорошая практика?

Какие плюсы / минусы / подводные камни?

8
задан glts 3 August 2019 в 18:37
поделиться