Microondas

Quase sempre estou fazendo mais de uma coisa na frente do computador, praticamente um ser multi tarefa… por exemplo hoje estou lendo um livro (Linux application Development) e fazendo um benchmark (em uma Cirrus Logic EDB9302 com Linux).
O Problema é saber quando é a hora de trocar de contexto: sair do processo ‘livro’, executar o processo ‘benchmark’… enquanto o ‘benchmark’ roda, eu troco de contexto para o ‘livro’, até que o ‘benchmark’ retorne eu volto a esta tarefa…
Ou deveria voltar … como o processo do livro é de baixo I/O, ele dificilmente bloqueia… o que prejudica a tarefa do ‘benchmark’… vendo isto, classifico meu escalonamento mental como cooperativo… e isto não é bom…
Procurando uma solução para o meu dilema… fui buscar mais um copo de café, e meu microondas deu a solução para os meus problemas… Usar sinais para troca de tarefa… mas de uma forma um pouco diferente dos Unix…
Fui correndo ao computador…. abri o vi:

vim /usr/local/bin/microondas

e escrevi as seguintes e geniais linhas:

#!/bin/sh
echo -e ‘\a’ && sleep 1 && echo -e ‘\a’ && sleep 1 && echo -e ‘\a’ && sleep 1 && echo -e ‘\a’


E executo o comando do benchmark e ao final ‘; microondas’

Agora ao escutar BIP BIP BIP BIP, (qual nomeei SIGCOFFEE)… eu ponho o processo do ‘livro’ para dormir, e acordo o processo ‘benchmark’…
MARAVILHA, acabei de evoluir de um ser cooperativo para um ser preemptivo…