Я видел TVar
- это простой контейнер, а TMVar
такой же, как MVar
, что означает, что у него есть блокировка и т. д., но в пределах монады STM
. Мне интересно, почему это может быть необходимо, поскольку идея STM
состоит в том, чтобы сделать блокировки ненужными.
Итак, что лучше всего использовать, если у вас, скажем, есть тип вроде [Handle ]
список дескрипторов сокетов, которые вы хотите использовать между потоками, созданными forkIO
?