update_a = tf.assign(a, b + c)
with tf.control_dependencies([update_a]):
    update_b = tf.assign(b, c + a.read_value())
with tf.control_dependencies([update_b]):
    update_c = tf.assign(c, a.read_value() + b.read_value())
Tensorflow: When are variable assignments done in sess.run with a list?