Pregunta

Tengo que simular un juego donde cada jugador tiene vueltas y necesidades a "prestar atención" a lo que está pasando.

Hasta ahora, sé que voy a necesitar dos hilos para cada jugador, uno que se va a dormir hasta que el turno del jugador y la otra prestando atención.

Mi pregunta es:Debo trabajar cada jugador como un 'fork' y los hilos en el tenedor, o simplemente crear hilos para el jugador y asociar de alguna manera?

Es la primera vez que he trabajado con la concurrencia, semáforos y subprocesos, por lo que no estoy seguro acerca de las buenas prácticas y el estilo de programación.

¿Fue útil?

Solución

Usted ha tropezado en los bordes de una gran guerra religiosa, en torno a la pregunta

Debería evento de programas impulsados por ser escrita usando múltiples hilos o el uso de una sola bucle de eventos?

Los hilos campamento cree que las entidades individuales, como "jugadores", son más fácil de programar, cuando se escribió, como hilos, posiblemente explcitly dando el procesador cuando ya no los necesite.Información sobre el reproductor del estado pueden ser almacenados en variables locales e incluso en el contador de programa.Pero con los hilos que usted puede tener que preocuparse acerca de atomicidad, punto muerto, y la otra alegría de la programación concurrente.

El evento impulsado por el campamento cree que es mucho más simple para obtener una aplicación en su totalidad a la derecha cuando cada entidad es capaz de responder a cada evento, y que la entidad obtiene el control total del procesador para la cantidad de tiempo que se necesita para procesar el evento (que mejor que ser finito, y por lo general mejor que ser corto).No hay preocupaciones acerca de la concurrencia ya que cada controlador de eventos se ejecuta automáticamente, pero hay una programación de costo:cuando el controlador de eventos acabados, todos los procedimientos de salida, y por lo que la información acerca de su estado tiene que ser almacenados en los campos de un objeto asignado en el montón.

Los hilos de la historia tiende a brillar cuando una entidad tiene complejo de control de flujo o quiere utilizar una gran cantidad de abstracción, tanto de estos son difíciles de código sin hilos.Los acontecimientos de la historia tiende a brillar cuando los controladores son bastante simples—es genial tener cada controlador de ejecutar automáticamente sin tener que preocuparse de ello, y se simplifica la comunicación entre las entidades.

Antes de continuar con su asignación, averiguar a qué grupo religioso de su instructor pertenece.

Desde que te has preguntado acerca de los hilos, yo recomiendo los hilos y los canales de bibliotecas en Dave Hanson C Interfaces e Implementaciones.El software es gratuito, y el libro vale la pena comprar—incluye muchos otros módulos que va a ser muy útil para cualquier persona que escribe la asignación de tareas en C.

Debo trabajar cada jugador como un 'fork' y los hilos en el tenedor, o simplemente crear hilos para el jugador y asociar de alguna manera?

A menos que se le ha pedido a utilizar fork, Me gustaría evitarlo—los mecanismos para la comunicación entre procesos Unix no son agradables de usar.Si usted puede conseguir el Hanson de la biblioteca, yo diría que crear un hilo por cada jugador, y que los jugadores se comuniquen unos con otros (y con el servidor del juego, que también debe ser un hilo) el uso de Hanson canales.

Otros consejos

En una situación de turno (juego) en realidad no necesitas hilos, las fibras/coroutinas lo harán (mejor).

'Prestar atención' no requiere un hilo, solo acceso al estado (-Cambios) cuando está listo para actuar nuevamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top