Why do they need to be volatile if only ever read or written to by a single thread?