From: Ben Peart Date: Mon, 29 Oct 2018 17:21:07 GMT Subject: Re: [PATCH v2 06/10] preload-index.c: remove #ifdef NO_PTHREADS 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: > Signed-off-by: Nguyễn Thái Ngọc Duy > --- > 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 > +#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 +#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,