This research paper appears in OSDI 2010. It thoroughly studies ad hoc synchronization from many real world applications and concludes that ad hoc synchronizations cause all kinds of problems, including bugs, performance issues and misleading concurrency bug detection tools. It also finds that ad hoc synchronizations are implemented in many various ways, thus very hard to be recognized. Because of this, the authors developed a tool, called SyncFinder, that automatically annotates ad hoc synchronizations in source code.The full paper can be downloaded from http://www.usenix.org/events/osdi10/tech/full_papers/Xiong.pdf. It's from the Opera Research Group at UCSD (http://opera.ucsd.edu/).
Should we stop using ad hoc synchronization? Do we need better synchronization libraries? What's your opinion on this?