From: Duy Nguyen Date: Sat, 15 Sep 2018 10:24:48 GMT Subject: Re: [PATCH v5 2/5] read-cache: load cache extensions on a worker thread Message-ID: In-Reply-To: On Sat, Sep 15, 2018 at 12:22 PM Duy Nguyen wrote: > > @@ -1944,6 +1993,26 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist) > > istate->cache = xcalloc(istate->cache_alloc, sizeof(*istate->cache)); > > istate->initialized = 1; > > > > + p.istate = istate; > > + p.mmap = mmap; > > + p.mmap_size = mmap_size; > > + > > +#ifndef NO_PTHREADS > > + nr_threads = git_config_get_index_threads(); > > + if (!nr_threads) > > + nr_threads = online_cpus(); > > + > > + if (nr_threads >= 2) { > > + extension_offset = read_eoie_extension(mmap, mmap_size); > > + if (extension_offset) { One more thing I forgot. If the extension area is small enough, then we should not need to create a thread to parse extensions in parallel. We should know roughly how much work we need because we know the total size of all extensions. > > + /* create a thread to load the index extensions */ > > Pointless comment. It's pretty clear from the pthread_create() below > thanks to good function naming. Please remove. > > > + p.src_offset = extension_offset; > > + if (pthread_create(&p.pthread, NULL, load_index_extensions, &p)) > > + die(_("unable to create load_index_extensions_thread")); > > + } > > + } > > +#endif > > + > > if (istate->version == 4) { > > previous_name = &previous_name_buf; > > mem_pool_init(&istate->ce_mem_pool, -- Duy