I am trying to solve the following architecture, but having some trouble. 

Basically there are multiple threads accessing the same the same object in parallel. The first thread is meant to execute `Object.A()` and all the other threads are supposed to wait until that process is finished and then proceed to execute `Object.B()` simultaneously without any blocking.

Can't find any resources online that explain anything would produce this functionality and any "solution" that jumps to mind with 2 custom boolean mutexes doesn't seem to work.