n this next-gen oriented article and today's main Gamasutra feature, Reflections (
Driv3r) Core Technology Manager Philippe Paquet explains how mutex and critical sections can avoid the concurrent use of un-shareable resources, when multiple threads have shared access to the same resource such as a file or a block of memory.
With regard to debugging mutex and critical sections, Paquet comments:
"As always, plan for debugging from the very beginning. Planning for debugging is important for any type of application but it is crucial in multi-threaded architectures.
The first thing you should be writing is debugging code. More precisely, thread safe versions of the following systems:
* trace message system
* log system
* dump system
If those facilities are available in the API you are using - don't reinvent the wheel - use them.
Design your application to run both as a serial application and as a parallel application. By doing so, you will be able to debug your application as a serial application before having to debug it as a parallel application."
You can now
read the full Gamasutra feature on the subject, including plenty more information vital to next-gen programmers (no registration required, please feel free to link to the article from external websites).