fix data races in controller

Fix #305
You don't need to Lock to Broadcast: http://golang.org/pkg/sync/#Cond.Broadcast