Когда мы запускаем выражение STM
, которое достигает retry
, поток блокируется, и транзакция запускается еще раз, если записи изменены.
Но мне было интересно:
Если мы прочитаем переменную STM, которая в этой конкретной ветке, ведущей к повторной попытке, на самом деле не используется, будет ли ее обновление пытаться выполнить транзакцию снова?
Хотя поток заблокирован, он действительно заблокирован? или он перерабатывается в пуле потоков для использования другими потенциально ожидающими операциями?