Re: Thread-safe reference counts.
On 28 mar, 23:50, Ian Collins <ian-n...@hotmail.com> wrote:
Jon Harrop wrote:
I have some code where objects are dynamically allocated by
some thread, and then used by multiple threads and freed
when they are no longer needed. I think that reference
counting is the most appropriate way to handle this in my
A concurrent garbage collector is the appropriate way to
handle that situation.
One possible way, reference counted objects work just as well.
That's wrong on two counts: first, reference counted objects
fail when cycles are present (which is almost always the case in
my code), and of course reference counting is more expensive in
terms of CPU time, especially in a multithreaded environment.
The latter is, of course, rarely a real problem. The first,
however, pretty much means that there are cases where reference
counting can't be used.
If the problem is freeing memory, especially in a multithreaded
environment, using the Boehm collector with C++ is definitly the
simplest solution. In his case, it sounds like
boost::shared_ptr would also be an effective solution. The
additional runtime will probably not be noticeable, and from his
very general description, it doesn't should like there would be
cycles, or if there were, they should be easy to break. (If
he's currently using neither, it's definitely easier to adopt
boost::shared_ptr---the Boehm collector requires some non
trivial configuration. On the other hand, I find it worthwhile
to invest the effort, since the results are generally useful.)
James Kanze (GABI Software) email:email@example.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34