Linux Today: Linux News On Internet Time.

C/C++ reference counting with atomic variables and gcc

May 28, 2009, 14:03 (3 Talkback[s])

[ Thanks to Alexander Sandler for this link. ]

"To explain why two mechanisms provide best performance and atomic variables aid us, consider following scenario.

"First thread (the manipulator) has to find a particular object in the data structure and change it. Second thread (the eraser) deletes expired objects. From time to time, first thread tries to manipulate an object that second thread tries to delete. This is a classical scenario that can be found in almost any multithreaded program.

"Obviously two threads have to work with some sort of mutual exclusion mechanism. Lets say we protect entire data structure with a single mutex. In this case, manipulator thread has to hold the mutex locked for as long as it takes it to find an object and to manipulate it. This means that eraser thread won't be able to access the data structure for as long as manipulator thread works. If all manipulator thread does is searching for entries and manipulates them, then eraser thread just won't be able to access the data structure."

Complete Story

Related Stories: