]> git.ipfire.org Git - thirdparty/git.git/commit - Makefile
thread-utils: macros to unconditionally compile pthreads API
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Sat, 27 Oct 2018 17:29:59 +0000 (19:29 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Oct 2018 02:22:48 +0000 (11:22 +0900)
commit0ec79358d07db38e5d9e9e8a7c0d78f455763844
tree7f6764d952bacb6b262511bfe395ecfb79d7665f
parentc670b1f876521c9f7cd40184bf7ed05aad843433
thread-utils: macros to unconditionally compile pthreads API

When built with NO_PTHREADS, the macros are used make the code build
even though pthreads header and library may be missing. The code can
still have different code paths for no threads support with
HAVE_THREADS variable.

There are of course impacts on no-pthreads builds:

- data structure may get slightly bigger because all the mutexes and
  pthread_t are present (as an int)

- code execution is not impacted much. Locking (in hot path) is
  no-op. Other wrapper function calls really should not matter much.

- the binary size grows bigger because of threaded code. But at least
  on Linux this does not matter, if some code is not executed, it's
  not mapped in memory.

This is a preparation step to remove "#ifdef NO_PTHREADS" in the code
mostly because of maintainability. As Jeff put it

> it's probably OK to stop thinking of it as "non-threaded platforms
> are the default and must pay zero cost" and more as "threaded
> platforms are the default, and non-threaded ones are OK to pay a
> small cost as long as they still work".

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
thread-utils.c
thread-utils.h