From Newton Wiki
Jump to: navigation, search


void NewtonWorldCriticalSectionUnlock (const NewtonWorld* const newtonWorld)


this function block all other threads from executing the same subsequent code simultaneously.


  • const NewtonWorld* const newtonWorld


  • (Procedure)


Exits critical section for the given world.

This ends the mutual exclusion period for the caller thread.

Since Newton became a multithreaded library it is necessary sometimes to lock resources in order to avoid concurrent access to shared resources.


  • this function should use to present racing conditions when when a call back ins executed form a multi threaded loop.
  • In general most call back are thread safe when they do not write to object outside the scope of the call back.
  • this means for example that the application can modify values of object pointed by the arguments and or call that function
  • that are allowed to be call for such callback.
  • There are cases, however, when the application need to collect data for the client logic, example of such case are collecting
  • information to display debug information, of collecting data for feedback.
  • In these situations it is possible the the same critical code could be execute at the same time but several thread causing unpredictable side effect.
  • so it is necessary to block all of the thread from executing any pieces of critical code.
  • it is important that the critical section wrapped by functions *NewtonWorldCriticalSectionLock* and
  • *NewtonWorldCriticalSectionUnlock* be keep small if the application is using the multi threaded functionality of the engine
  • no doing so will lead to serialization of the parallel treads since only one thread can run the a critical section at a time.

See also