home | list info | list archive | date index | thread index

Re: possible race condition in makefile with multiple dependencies?

  • Subject: Re: possible race condition in makefile with multiple dependencies?
  • From: Richard Guy Briggs <rgb [ at ] tricolour [ dot ] ca>
  • Date: Thu, 3 Jun 2021 10:47:18 -0400
On 2021-06-03 10:27, Robert P. J. Day wrote:
> On Thu, 3 Jun 2021, Dianne Skoll wrote:
> 
> > On Thu, 3 Jun 2021 10:19:22 -0400
> > "Michael P. Soulier" <msoulier [ at ] digitaltorque [ dot ] ca> wrote:
> >
> > > On 2021-06-03 10:09 a.m., Dianne Skoll wrote:
> > > > See the -j option
> >
> > > Seems like a race condition waiting to happen.
> >
> > Shouldn't be.  My understanding (which may be wrong) is that make
> > calculates the dependency graph first, not in parallel.  Then it
> > executes as many parallel tasks as the -j option asks for, or that
> > make sense... whichever is smaller.  Since the dependency graph is a
> > DAG, make should, in theory, be smart enough to see that two
> > dependencies depend on the same node and run only one job to build
> > the depended-upon node.
> >
> > I routinely use "make -j `nproc`" and have never run into any
> > issues.
> 
>   this was my understanding as well, i just wanted to hear some
> confirmation from someone else.

I routinely use make -j 8 on an 8-core machine to build the linux
kernel.  I only ran into problems when I tried to include the targets
"modules_install" and "install" in the same multithreaded make command.

It even works over NFS as long as the two clocks are reasonably close.

> rday

	slainte mhath, RGB

--
Richard Guy Briggs               --  ~\    -- ~\             <hpv.tricolour.ca>
<www.TriColour.ca>                 --  \___   o \@      @        Ride yer bike!
Ottawa, ON, CANADA                  --  Lo_>__M__\\/\%__\\/\%
Vote! -- <greenparty.ca>_____GTVS6#790__(*)__(*)________(*)(*)_________________

To unsubscribe send a blank message to linux+unsubscribe [ at ] linux-ottawa [ dot ] org
To get help send a blank message to linux+help [ at ] linux-ottawa [ dot ] org
To visit the archives: https://lists.linux-ottawa.org