CPU i top rusade från 10% till 67% ganska snabbt. Jag testade på en netbook med n450 Intel Atom-prolle. Så nog belastar det CPU alltid om man inte har med sleep.

Men hur fungerar sleep egentligen? Den borde ju kolla mot systemklockan lite då och då för att veta när angiven tid förflutit, eller hur fungerar det egentligen?m!rage skrev:Jag beskrev bara hur nice fungerar. Detta skriptet verkar dock ganska harmlöst om det bara uppdaterar en gång i sekunden.
Men någonting måste ju ändå hålla reda på när tiden gått…m!rage skrev:Jag vet faktiskt inte. Kanske gör det att tråden (programmet) lämnar ifrån sig processorn och anger att det inte behöver anropas igen förrän om en viss tid.
Detta någonting kallas för kärnan.Johnny Rosenberg skrev:Men någonting måste ju ändå hålla reda på när tiden gått…
Det där är ett bra exempel på en dålig loop.ubot skrev:Även om loopen ser ut så här?mcNisse skrev:Det belastar inget om du har en sleep i den. Går loopen i spin och kör som en tok så är läget helt annorlunda.
while true; do
echo "Hello World"
done
Även om loopen är jättesimpel men saknar sleep?
Jo, jag testade ju och processorn rusade för fullt.mcNisse skrev:Det där är ett bra exempel på en dålig loop.ubot skrev:Även om loopen ser ut så här?mcNisse skrev:Det belastar inget om du har en sleep i den. Går loopen i spin och kör som en tok så är läget helt annorlunda.
while true; do
echo "Hello World"
done
Även om loopen är jättesimpel men saknar sleep?
Frågan är varför du vill se kedjan XBMC -> script -> Spotify. Kika på strukturen här: XBMC och Spotify körs av scriptet, som körs av XBMC, som också körs av scriptet... Så vad händer exempelvis när XBMC startar scriptet, efter att scriptet startat XBMC på nytt? Du kan lösa flertalet potentiella problem genom att låta scriptet påbörja kedjan och sköta processernas turordning. Exempelvis kan du fortfarande ha ett script i XBMC som pratar med huvudscriptet.ubot skrev:2. Jag försöker exekvera bash-skriptet genom att bina en keyboard shortcut till skriptet men det verkar som om XBMC på något sätt stänger av tangentbordsgenvägarna i Ubuntu när man kör XBMC i fullscreen? Hur ska jag göra för att köra ett bash-skript i XBMC?
Kod: Markera allt
#!/bin/bash
FIFO="/tmp/xbmc-spotify-controller"
tasks[0]="./moo.sh 1"
tasks[1]="./moo.sh 2"
taskindex=0
next_task() {
[[ -n $COPROC_ID ]] && \
kill -QUIT $COPROC_PID && \
wait $COPROC_ID
coproc ${tasks[$taskindex]}
((++taskindex >= ${#tasks[@]})) && taskindex=0
}
mkfifo $FIFO
while read w < $FIFO
do [[ $w == "next" ]] && next_task
done
Kod: Markera allt
#!/bin/bash
echo $* > moo.out
Kod: Markera allt
(~)% echo next > /tmp/xbmc-spotify-controller && cat moo.out
1
(~)% echo next > /tmp/xbmc-spotify-controller && cat moo.out
2
(~)% echo next > /tmp/xbmc-spotify-controller && cat moo.out
1