elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Input no bloqueante
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Input no bloqueante  (Leído 2,435 veces)
gonzaloi

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Input no bloqueante
« en: 3 Mayo 2011, 04:11 am »

Hola.... que tal gente ??

Alguien conoce alguna funcion o manera (dentro del estandar de C/C++) de ingrasar datos desde el teclado sin bloquear el programa esperando el input ??

Algo comooo:

char c='x';
While(c != 'q'){
//codigo que setea el valor de c solo si se ingreso alguna tecla desde teclado
}

La idea que el bucle se repita "infinitas" veces, sin congelar el programa a la espera del ingreso por teclado, hasta que se ingrese 'q'

Muchas gracias!!



En línea

gonzaloi

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Input no bloqueante
« Respuesta #1 en: 3 Mayo 2011, 04:33 am »

Bueno, lei en varios lados y no encuentro nada portable.

Se me ocurre lanzar un hilo a parte con el proceso principal y dejar el hilo principal congelado con un "cin >> c;" . Pero mi duda es, es performante esto ??


En línea

pucheto

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Input no bloqueante
« Respuesta #2 en: 3 Mayo 2011, 05:40 am »

Bueno, lei en varios lados y no encuentro nada portable.

Se me ocurre lanzar un hilo a parte con el proceso principal y dejar el hilo principal congelado con un "cin >> c;" . Pero mi duda es, es performante esto ??
No tendrias problemas de performance pq el thread ese que hace la lecutura pasa a estar bloqueado... ( hasta que no se termine su operacion de I/O el scheduler ni se gasta en mirarlo... ) igual es poco recomendable... Conta un poco mas que es lo que queres hacer y vemos que se puede hacer...
En línea

EvilGoblin


Desconectado Desconectado

Mensajes: 2.323


YO NO LA VOTE!


Ver Perfil
Re: Input no bloqueante
« Respuesta #3 en: 3 Mayo 2011, 14:52 pm »

Por hilos no podrias, va, si podrias, pero ten en cuenta que tienes 1 solo "puntero" (si estamos hablando de MS-DOS) que va a escribir. Y si haces refrescar la pantalla cada X milisegundos y que el puntero este abajo a la espera de algun comando, se va a volver muy lento y feo.

La opcion "mas viable" es 1 solo hilo (el principal) y que no refresquee TODA la pantalla, solo los datos que se modifican, y un while que vaya recorriendo toda la pantalla y modificando los datos, y cuando reciba alguna tecla que la agrege en el lugar de INPUT.

Para recibir teclas sin BLOCK hay una libreria no standard liviana, _kbhit()

sino, instala y aprende a usar ncurses xD (Funciona muy bien, se usa mucho para consola)
En línea

Experimental Serial Lain [Linux User]
gonzaloi

Desconectado Desconectado

Mensajes: 27


Ver Perfil
Re: Input no bloqueante
« Respuesta #4 en: 3 Mayo 2011, 15:44 pm »

No tendrias problemas de performance pq el thread ese que hace la lecutura pasa a estar bloqueado... ( hasta que no se termine su operacion de I/O el scheduler ni se gasta en mirarlo... ) igual es poco recomendable... Conta un poco mas que es lo que queres hacer y vemos que se puede hacer...

Con el comentario del scheduler me dijistes todo en cuanto a la performance. Gracias.

Lo que estoy haciendo es un programita servidor que acepta conexiones de clientes(por cada conexion lanzo un hilo) hasta que se ingrese por teclado la tecla 'q'. Cuando se ingresa esta tecla, se cierran todas las conexiones y se finaliza el programa.

Creo que voy a hacer asi, dejar bloqueado el hilo principal a la espera del ingreso de la tecla(con un "cin<< teclaPresionada;"), y en otro hilo acepto las conexiones.

Saludos !!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
input type « 1 2 »
PHP
JJely 16 5,375 Último mensaje 8 Febrero 2010, 18:59 pm
por KrossPock
input -
PHP
JJely 2 1,728 Último mensaje 8 Febrero 2010, 04:41 am
por KrossPock
INPUT NOT SUPPORTED wifiway 2.0.1
Wireless en Linux
peluvini 0 2,147 Último mensaje 25 Febrero 2011, 22:05 pm
por peluvini
Un bug bloqueante detiene la nueva build de Windows 10
Noticias
wolfbcn 0 823 Último mensaje 12 Marzo 2015, 18:58 pm
por wolfbcn
Ayuda creando input box y obteniendo input en un string. Windows Api.
Programación C/C++
@XSStringManolo 3 634 Último mensaje 11 Junio 2019, 10:29 am
por Eternal Idol
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines