Re: [PATCH v2 06/10] preload-index.c: remove #ifdef NO_PTHREADS
- From
Ben Peart <peartben@gmail.com>
- Date
- Oct 29, 2018, 17:21 UTC
- Message-ID
- <0ee246db-d781-9a42-8b8c-3e98c132b0ae@gmail.com>
- In-Reply-To
- <20181027173008.18852-7-pclouds@gmail.com>
On 10/27/2018 1:30 PM, Nguyễn Thái Ngọc Duy wrote:
Show 46 quoted lines
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
> ---
> preload-index.c | 15 ++-------------
> 1 file changed, 2 insertions(+), 13 deletions(-)
>
> diff --git a/preload-index.c b/preload-index.c
> index 9e7152ab14..0e24886aca 100644
> --- a/preload-index.c
> +++ b/preload-index.c
> @@ -7,17 +7,7 @@
> #include "fsmonitor.h"
> #include "config.h"
> #include "progress.h"
> -
> -#ifdef NO_PTHREADS
> -static void preload_index(struct index_state *index,
> - const struct pathspec *pathspec,
> - unsigned int refresh_flags)
> -{
> - ; /* nothing */
> -}
> -#else
> -
> -#include <pthread.h>
> +#include "thread-utils.h"
>
> /*
> * Mostly randomly chosen maximum thread counts: we
> @@ -108,7 +98,7 @@ static void preload_index(struct index_state *index,
> struct thread_data data[MAX_PARALLEL];
> struct progress_data pd;
>
> - if (!core_preload_index)
> + if (!HAVE_THREADS || !core_preload_index)
> return;
>
> threads = index->cache_nr / THREAD_COST;
> @@ -151,7 +141,6 @@ static void preload_index(struct index_state *index,
>
> trace_performance_leave("preload index");
> }
> -#endif
>
> int read_index_preload(struct index_state *index,
> const struct pathspec *pathspec,
> In the theory that code speaks louder than comments, here is the patch I used when testing out the idea of getting rid of NO_PTHREADS:
git diff head~1 preload-index.c
diff --git a/preload-index.c b/preload-index.c index 9e7152ab14..266bc9d8d7 100644 --- a/preload-index.c +++ b/preload-index.c @@ -7,17 +7,7 @@ #include "fsmonitor.h" #include "config.h" #include "progress.h" - -#ifdef NO_PTHREADS -static void preload_index(struct index_state *index, - const struct pathspec *pathspec, - unsigned int refresh_flags) -{ - ; /* nothing */ -} -#else - -#include <pthread.h> +#include "thread-utils.h" /* * Mostly randomly chosen maximum thread counts: we @@ -104,7 +94,7 @@ static void preload_index(struct index_state *index, const struct pathspec *pathspec, unsigned int refresh_flags) { - int threads, i, work, offset; + int cpus, threads, i, work, offset; struct thread_data data[MAX_PARALLEL]; struct progress_data pd; @@ -114,6 +104,9 @@ static void preload_index(struct index_state *index, threads = index->cache_nr / THREAD_COST; if ((index->cache_nr > 1) && (threads < 2) && git_env_bool("GIT_TEST_PRELOAD_INDEX", 0)) threads = 2; + cpus = online_cpus(); + if (threads > cpus) + threads = cpus; if (threads < 2) return; trace_performance_enter(); @@ -151,7 +144,6 @@ static void preload_index(struct index_state *index, trace_performance_leave("preload index"); } -#endif int read_index_preload(struct index_state *index, const struct pathspec *pathspec,