Shouldn't this semaphore be decreased only after renderView() has completed? It's called via "go renderView()". Maybe take the semaphore *in* the method?