Reading and writing floats is atomic, this is guaranteed by the language. However, operations on floats are not atomic. There is no way around using some kind of syncing in this case.
On a sidenote, you have a small race condition, the while might exit before any thread was ever started.