データフロー変数とSTM

Ozなどのデータフロー変数が「ある非バインド状態の変数がスレッド内で見つかった時,その変数を他のスレッドがバインドするまで処理を遅らせる」というのは分かるのだけど,この変数への変更処理はやっぱりアトミックな領域にしてやらないと行けない気がしているのだけどどうなんだろうか?それとも,データフロー変数自体がそういうものなのか,Oz自体がそうなのか.データフロー変数が並行処理で有用なのは何となく分かるけど,これを他のOOPとかに移植する場合どうすればいいのか気になった(これ見てもその辺が分からない).
「STMとどっちが有用なの?」と聞かれたから浮かんだ疑問なのだけど,どうにも領域が違う気がしている(STMの方がもっと大きい感じ).STMはこんな感じだと思っているのだけど,詳しい所分からないので誰か教えて下さい.