Como faço dois comandos ao mesmo tempo?

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Como faço dois comandos ao mesmo tempo?

shinigamiphoenix
Eu queria executar o io.read() e atualizar o os.date("*t") ao mesmo tempo. Tem como?

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

Eric Chiesse
Não entendi exatamente o que você quer. Dá um exemplo de onde vc quer usar isso.

Abraço


---
Eric


Em 15 de janeiro de 2014 14:28, shinigamiphoenix <[hidden email]> escreveu:
Eu queria executar o io.read() e atualizar o os.date("*t") ao mesmo tempo. Tem como?

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

shinigamiphoenix
In reply to this post by shinigamiphoenix
Um exemplo.

input = io.read()

-- enquanto ele espera a entrada do usuário, ele atualiza constantemente o os.date("*t"), para saber o horário a cada segundo.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

shinigamiphoenix
In reply to this post by shinigamiphoenix
No meu programa, há uma função de temporizador, justamente para desligar o computador.

se o usuário escrever "shutdown [hora]:[minuto], o programa irá continuar rodando normalmente, mas irá ficar atualizando o os.date("*t")

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

Thalles Robson
Já tentasse algo com co-rotinas?


Em 15 de janeiro de 2014 16:31, shinigamiphoenix <[hidden email]> escreveu:
No meu programa, há uma função de temporizador, justamente para desligar o computador.

se o usuário escrever "shutdown [hora]:[minuto], o programa irá continuar rodando normalmente, mas irá ficar atualizando o os.date("*t")

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Thalles Robson

Grandes líderes inspiram a grandeza em outras pessoas (Starwars)

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

Eric Chiesse
Só vejo como fazer isso com threads. Mas o lua não tem suporte direto a elas.
Talvez usando Lanes.

Co-rotinas não vão ajudar pois o io.read vai blocar e não ocorrerá o próximo yield.

Se a execução em paralelo é mandatória, acho que você vai precisar fazer algo em C.

Agora, pode ser que o efeito final que você deseja não necessariamente necessite paralelismo, mas é necessário saber um pouco mais sobre sua aplicação.



---
Eric


Em 15 de janeiro de 2014 18:47, Thalles Robson <[hidden email]> escreveu:
Já tentasse algo com co-rotinas?


Em 15 de janeiro de 2014 16:31, shinigamiphoenix <[hidden email]> escreveu:

No meu programa, há uma função de temporizador, justamente para desligar o computador.

se o usuário escrever "shutdown [hora]:[minuto], o programa irá continuar rodando normalmente, mas irá ficar atualizando o os.date("*t")

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.



--
Thalles Robson

Grandes líderes inspiram a grandeza em outras pessoas (Starwars)

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Re: [lua-br] Re: Como faço dois comandos ao mesmo tempo?

Tomás Guisasola-2
  Oi Eric e Thalles

  Usar só co-rotinas não resolve.  O problema é que a io.read vai
bloquear o programa, então você teria lançar de mão de outro recurso
(como threads do sistema).
  Mas será que não dá para fazer de outro jeito? A seção 9.4 do
PiL (qualquer uma das três versões serve) fala exatamente desse assunto:
non-preemptive multithreading. A ideia é a seguinte: antes de ler alguma
coisa (com io.read), o programa deve checar se tem algo para ser lido
(com socket.select).

  Abraços,
  Tomás

On Wed, 15 Jan 2014, Eric Chiesse wrote:

> Só vejo como fazer isso com threads. Mas o lua não tem suporte direto a
> elas.
> Talvez usando Lanes.
>
> Co-rotinas não vão ajudar pois o io.read vai blocar e não ocorrerá o
> próximo yield.
>
> Se a execução em paralelo é mandatória, acho que você vai precisar fazer
> algo em C.
>
> Agora, pode ser que o efeito final que você deseja não necessariamente
> necessite paralelismo, mas é necessário saber um pouco mais sobre sua
> aplicação.
>
>
>
> ---
> Eric
>
>
> Em 15 de janeiro de 2014 18:47, Thalles Robson <[hidden email]>escreveu:
>
>> Já tentasse algo com co-rotinas?
>>
>>
>> Em 15 de janeiro de 2014 16:31, shinigamiphoenix <
>> [hidden email]> escreveu:
>>
>> No meu programa, há uma função de temporizador, justamente para desligar o
>>> computador.
>>>
>>> se o usuário escrever "shutdown [hora]:[minuto], o programa irá continuar
>>> rodando normalmente, mas irá ficar atualizando o os.date("*t")
>>>
>>> --
>>> Lua BR - http://groups.google.com/group/lua-br
>>> ---
>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>>> dos Grupos do Google.
>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>> envie um e-mail para [hidden email].
>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>>
>>
>>
>>
>> --
>> Thalles Robson
>>
>> Grandes líderes inspiram a grandeza em outras pessoas (Starwars)
>>
>>  --
>> Lua BR - http://groups.google.com/group/lua-br
>> ---
>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>> dos Grupos do Google.
>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>> envie um e-mail para [hidden email].
>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>
>
>

--

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Re: [lua-br] Re: Como faço dois comandos ao mesmo tempo?

Mauricio Henrique Bomfim
Uma outra alternativa é usar um bind da biblioteca libuv que implementa
asyncronous I/O. No github tem várias opções de libuv para Lua.

Eu experimentei algumas e a que funcionou melhor foi a
http://luvit.io, que é fortemente baseada nas idéias do node.js.

O problema é que a luvit.io não funciona como uma biblioteca que
pode ser carregada no interpretador Lua, mas sim um interpretador Lua
próprio que implementa o libuv.

Aqui tem vários exemplos de uso da luvit.io:
https://github.com/luvit/luvit/tree/master/examples

[]s

Mauricio

2014/1/15 Tomas Guisasola Gorham <[hidden email]>:

>         Oi Eric e Thalles
>
>         Usar só co-rotinas não resolve.  O problema é que a io.read vai
> bloquear o programa, então você teria lançar de mão de outro recurso
> (como threads do sistema).
>         Mas será que não dá para fazer de outro jeito?  A seção 9.4 do
> PiL (qualquer uma das três versões serve) fala exatamente desse assunto:
> non-preemptive multithreading.  A ideia é a seguinte: antes de ler alguma
> coisa (com io.read), o programa deve checar se tem algo para ser lido
> (com socket.select).
>
>         Abraços,
>                 Tomás
>
>
> On Wed, 15 Jan 2014, Eric Chiesse wrote:
>
>> Só vejo como fazer isso com threads. Mas o lua não tem suporte direto a
>> elas.
>> Talvez usando Lanes.
>>
>> Co-rotinas não vão ajudar pois o io.read vai blocar e não ocorrerá o
>> próximo yield.
>>
>> Se a execução em paralelo é mandatória, acho que você vai precisar fazer
>> algo em C.
>>
>> Agora, pode ser que o efeito final que você deseja não necessariamente
>> necessite paralelismo, mas é necessário saber um pouco mais sobre sua
>> aplicação.
>>
>>
>>
>> ---
>> Eric
>>
>>
>> Em 15 de janeiro de 2014 18:47, Thalles Robson
>> <[hidden email]>escreveu:
>>
>>> Já tentasse algo com co-rotinas?
>>>
>>>
>>> Em 15 de janeiro de 2014 16:31, shinigamiphoenix <
>>> [hidden email]> escreveu:
>>>
>>> No meu programa, há uma função de temporizador, justamente para desligar
>>> o
>>>>
>>>> computador.
>>>>
>>>> se o usuário escrever "shutdown [hora]:[minuto], o programa irá
>>>> continuar
>>>> rodando normalmente, mas irá ficar atualizando o os.date("*t")
>>>>
>>>> --
>>>> Lua BR - http://groups.google.com/group/lua-br
>>>> ---
>>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>>>> dos Grupos do Google.
>>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>>> envie um e-mail para [hidden email].
>>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>>>
>>>
>>>
>>>
>>> --
>>> Thalles Robson
>>>
>>> Grandes líderes inspiram a grandeza em outras pessoas (Starwars)
>>>
>>>  --
>>> Lua BR - http://groups.google.com/group/lua-br
>>> ---
>>> Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
>>> dos Grupos do Google.
>>> Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
>>> envie um e-mail para [hidden email].
>>> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
>>>
>>
>>
>
> --
>
> --
> Lua BR - http://groups.google.com/group/lua-br
> --- Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
> dos Grupos do Google.
> Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie
> um e-mail para [hidden email].
> Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Re: [lua-br] Re: Como faço dois comandos ao mesmo tempo?

Eric Chiesse
In reply to this post by Tomás Guisasola-2


Em 15 de janeiro de 2014 21:38, Tomas Guisasola Gorham <[hidden email]> escreveu:
        Oi Eric e Thalles

        Usar só co-rotinas não resolve.  O problema é que a io.read vai
bloquear o programa, então você teria lançar de mão de outro recurso
(como threads do sistema).

Não foi o que eu falei ? ;-)

On Wed, 15 Jan 2014, Eric Chiesse wrote:

Só vejo como fazer isso com threads. Mas o lua não tem suporte direto a
elas.
Talvez usando Lanes.

Co-rotinas não vão ajudar pois o io.read vai blocar e não ocorrerá o
próximo yield.

Se a execução em paralelo é mandatória, acho que você vai precisar fazer
algo em C.

Agora, pode ser que o efeito final que você deseja não necessariamente
necessite paralelismo, mas é necessário saber um pouco mais sobre sua
aplicação.



---
Eric


Em 15 de janeiro de 2014 18:47, Thalles Robson <[hidden email]>escreveu:

Já tentasse algo com co-rotinas?


Em 15 de janeiro de 2014 16:31, shinigamiphoenix <
[hidden email]> escreveu:

No meu programa, há uma função de temporizador, justamente para desligar o
computador.

se o usuário escrever "shutdown [hora]:[minuto], o programa irá continuar
rodando normalmente, mas irá ficar atualizando o os.date("*t")

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.




--
Thalles Robson

Grandes líderes inspiram a grandeza em outras pessoas (Starwars)

 --
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR"
dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails,
envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.




--

--
Lua BR - http://groups.google.com/group/lua-br
--- Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.
Reply | Threaded
Open this post in threaded view
|

Re: Como faço dois comandos ao mesmo tempo?

shinigamiphoenix
In reply to this post by shinigamiphoenix
Acho que vou ter que fazer o programa de outro jeito mesmo. Mas agradeço a todos!

--
Lua BR - http://groups.google.com/group/lua-br
---
Você está recebendo esta mensagem porque se inscreveu no grupo "Lua BR" dos Grupos do Google.
Para cancelar a inscrição neste grupo e parar de receber seus e-mails, envie um e-mail para [hidden email].
Para obter mais opções, acesse https://groups.google.com/groups/opt_out.