bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: multi-threaded compiling


From: Mischa Baars
Subject: Re: multi-threaded compiling
Date: Mon, 11 Mar 2024 20:12:51 +0100

That's not really an answer to the question.

Also I don't think that gives you an exit status for each 'exit $i'
started. I need that exit status.


On Mon, 11 Mar 2024, 20:03 alex xmb sw ratchev, <fxmbsw7@gmail.com> wrote:

>
>
> On Mon, Mar 11, 2024, 20:03 alex xmb sw ratchev <fxmbsw7@gmail.com> wrote:
>
>> the logic between my code
>>
>> 1 threads_max
>> 2 loop
>> 3 inside loop , do if run is > than threads_max then wait -n one
>> then 4 spawn thread
>>
>
> 3 if run isnt more than max , simply ignore and spawn thread in next cmd
>
> i dont get ur points
>>
>> On Mon, Mar 11, 2024, 19:55 Mischa Baars <mjbaars1977.backup@gmail.com>
>> wrote:
>>
>>> Sorry. I mean:
>>>
>>> for (( i=0; i<32; i++ )); do exit $i & done; for (( i=0; i<32; i++ ));
>>> do wait -n; echo $?; done;
>>>
>>> doesn't function. With an ampersand instead of a semicolon. Why does it
>>> function when called from a script and why does it fail when called from
>>> the command line?
>>>
>>> On Mon, Mar 11, 2024 at 7:46 PM Mischa Baars <
>>> mjbaars1977.backup@gmail.com> wrote:
>>>
>>>> You mean:
>>>>
>>>> for (( i=0; i<32; i++ )); do exit $i & wait -n; echo $?; done;
>>>>
>>>> with one command and one wait in a single loop. And this does execute
>>>> on the command line. How interesting!
>>>>
>>>> for (( i=0; i<32; i++ )); do exit $i; done; for (( i=0; i<32; i++ ));
>>>> do wait -n; echo $?; done;
>>>>
>>>> Because this doesn't and to be honest, I needed the pid and its index
>>>> to retrieve gcc's output from a log file array afterwards.
>>>>
>>>> On Mon, Mar 11, 2024 at 7:25 PM alex xmb sw ratchev <fxmbsw7@gmail.com>
>>>> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Mon, Mar 11, 2024, 19:22 Mischa Baars <mjbaars1977.backup@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> On Mon, Mar 11, 2024 at 6:22 PM alex xmb sw ratchev <
>>>>>> fxmbsw7@gmail.com> wrote:
>>>>>>
>>>>>>> i also completly dont get ur issue
>>>>>>>
>>>>>>> f=( a.c b.c .. ) threads=$( nproc ) i=-1 r=
>>>>>>>
>>>>>>>   while [[ -v f[++i] ]] ; do
>>>>>>>  (( ++r > threads )) &&
>>>>>>> wait -n
>>>>>>> gcc -c "${f[i]}" &
>>>>>>>   done
>>>>>>>
>>>>>>
>>>>>> How nice!
>>>>>>
>>>>>> wait -n exit 1 & echo $?
>>>>>>
>>>>>
>>>>> doesnt need a pid
>>>>> 1 : 1 as i wrote it , excepts add 'wait' as new last line
>>>>>
>>>>> You got me the solution :) Except that wait expects a pid after -n.
>>>>>>
>>>>>> Maybe
>>>>>>
>>>>>> for (( i=0; i<32; i++ )); do exit 1 & wait -n $!; echo $?; done;
>>>>>>
>>>>>> is what you meant? The equivalence of sequential execution?
>>>>>>
>>>>>> First think, then do magic.
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>>
>>>>>>> On Mon, Mar 11, 2024, 18:16 Mischa Baars <
>>>>>>> mjbaars1977.backup@gmail.com> wrote:
>>>>>>>
>>>>>>>> Hello Paul,
>>>>>>>>
>>>>>>>> It seems I'm awake a little longer than you are.
>>>>>>>>
>>>>>>>> The second paragraph as you see it, belongs to 1)
>>>>>>>> The fourth paragraph as you see it, belongs to 2)
>>>>>>>>
>>>>>>>> The actual command invocations (a Makefile, a make.sh script) can
>>>>>>>> be found
>>>>>>>> in the attachment, as indicated on the first line of the mail. In
>>>>>>>> the
>>>>>>>> attachment there are two directories, one and two, belonging to 1)
>>>>>>>> and 2)
>>>>>>>> respectively.
>>>>>>>>
>>>>>>>> I'm not into Vulcan mindmelds, so I hope everything from the first
>>>>>>>> mail
>>>>>>>> makes sense to you and everyone on this mailing list now.
>>>>>>>>
>>>>>>>> Best regards,
>>>>>>>> Mischa Baars.
>>>>>>>>
>>>>>>>> On Mon, Mar 11, 2024 at 5:01 PM Paul Smith <psmith@gnu.org> wrote:
>>>>>>>>
>>>>>>>> > On Mon, 2024-03-11 at 09:56 +0100, Mischa Baars wrote:
>>>>>>>> > > I've attached the problem. It consists of two parts:
>>>>>>>> > >
>>>>>>>> > > 1) multi-threaded bash script and / or multi-threaded Makefile
>>>>>>>> > >
>>>>>>>> > > Running bash script functions as expected, but executing the
>>>>>>>> same
>>>>>>>> > > line of code with make and / or the command line, does not
>>>>>>>> function.
>>>>>>>> > > Perhaps someone could explain to me why?
>>>>>>>> > >
>>>>>>>> > > 2) passing a string argument from a bash script and / or
>>>>>>>> Makefile to
>>>>>>>> > > the gcc -D option
>>>>>>>> > >
>>>>>>>> > > Running the makefile functions as expected, but I have not been
>>>>>>>> able
>>>>>>>> > > to get similar code to work from a bash script. Can someone
>>>>>>>> please
>>>>>>>> > > explain to me what I'm doing wrong?
>>>>>>>> >
>>>>>>>> > I don't understand the problem.  In the third paragraph above you
>>>>>>>> say
>>>>>>>> > the bash script works as expected and the makefile doesn't work,
>>>>>>>> but in
>>>>>>>> > the last paragraph you say that the makefile works as expected
>>>>>>>> but you
>>>>>>>> > can't get it to work in bash.
>>>>>>>> >
>>>>>>>> > Please provide actual command invocations (cut and pasted)
>>>>>>>> showing the
>>>>>>>> > output you received and explaining exactly what is wrong with it.
>>>>>>>> >
>>>>>>>> > But before you do that, be aware that make does NOT invoke
>>>>>>>> /bin/bash as
>>>>>>>> > its shell.  It invokes /bin/sh.  On some systems /bin/sh is
>>>>>>>> actually an
>>>>>>>> > alias for bash.  On other systems it isn't.
>>>>>>>> >
>>>>>>>> > If you want your makefile to always use bash as its shell, you
>>>>>>>> should
>>>>>>>> > add an explicit:
>>>>>>>> >
>>>>>>>> >     SHELL := /bin/bash
>>>>>>>> >
>>>>>>>> > to your makefile to force it.  Maybe that will solve your
>>>>>>>> problem.  If
>>>>>>>> > not we'll need details such as I mention above.
>>>>>>>> >
>>>>>>>>
>>>>>>>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]