Go to file
Shawn O. Pearce 098ac57a13 Refactor pack memory management and locking to be safer
Using an atomic reference counter is difficult to make
cross-platform, as the reference count implementations
are generally processor specific.  Its also hard to do
a proper multi-read/single-write implementation.

We now use a simple mutex around the reference count for the list
of packs.  Readers grab the mutex and either build the list, or
increment the existing one's reference count.  When the reader is
done with the list, the reference count is decremented.  In this way
parallel readers are able to operate on the list without worrying
about it being deallocated out from under them.

Individual pack structures are held by reference counts, but we
only care about the list the pack structure is held in.  There is
no need to increment/decrement the pack reference counts as we
scan through them during a read operation, the caller holds the
git_packlist and that is sufficient to hold the packs it references.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
2009-01-03 00:02:25 -08:00
src Refactor pack memory management and locking to be safer 2009-01-03 00:02:25 -08:00
tests Rewrite git_foreach_dirent into gitfo_dirent 2008-12-31 15:35:36 -08:00
.gitignore Add pkg-config support. 2008-12-30 07:31:03 -08:00
.HEADER Switch the license from BSD to GPL+libgcc exception 2008-11-01 15:55:47 -07:00
api.doxygen doxygen config: Update path to public headers 2008-12-02 08:45:03 -08:00
CONVENTIONS Move include files to include/git/, drop git_ prefix from file names 2008-11-01 15:42:23 -07:00
COPYING Switch the license from BSD to GPL+libgcc exception 2008-11-01 15:55:47 -07:00
git.git-authors Add Adam Simpkins to list of consenting authors 2008-12-09 08:36:10 -08:00
libgit2.pc.in Fix pkgconfig file wrt last added dependencies 2008-12-30 16:50:45 -08:00
Makefile Add a build variable to allow supression of -fvisibility 2008-12-31 13:45:34 -08:00