In what moment i need call the function GetThreadManager to get it and use semaphore* functions? Each time i will use some of the functions (a sequence of them), a "per-thread" basis or i can discover it only one time, set for example to a global and use the global aways?