2008-09-29 27 views
41

Es útil nombrar hilos para que uno pueda determinar qué hilos están haciendo qué para fines de diagnóstico y depuración.convenciones de nomenclatura para hilos?

¿Existe un convenio de denominación particular para las discusiones en una aplicación en gran medida multi-roscado que funciona mejor que otro? ¿Alguna guía? ¿Qué tipo de información debe ir en el nombre de un hilo? ¿Qué has aprendido sobre cómo nombrar tus hilos que podrían ser útiles para otros?

Respuesta

39

No tengo conocimiento de ninguna norma. Durante el tiempo que he encontrado estas pautas para ser útil:

  • Utilizar nombres cortos, ya que no hacen las líneas en un archivo de registro demasiado largo.

  • crear nombres en la parte importante está en el comienzo. Los lectores de registro en una interfaz gráfica de usuario tienden a tener tablas con columnas, y la columna de subprocesos suele ser pequeña o pequeña para que pueda leer todo lo demás.

  • No utilizar la palabra "hilo" en el nombre del hilo, ya que es obvio.

  • hacen los nombres de hilo fácilmente grep-poder. Evite nombres de hilos que suenen similares

  • si tiene varios hilos de la misma naturaleza, enumere con ID que son exclusivos para una ejecución de la aplicación o un archivo de registro, lo que se ajuste a sus hábitos de registro.

  • evite generalizaciones como "WorkerThread" (¿cómo nombre los siguientes 5 hilos de trabajo?), "GUIThread" (¿qué GUI? ¿Es para una ventana? ¿Para todo?) O "Cálculo" (¿qué calcula? ?).

  • si usted tiene un grupo de prueba que utiliza nombres de rosca a grep archivos de registro de su aplicación, no cambie el nombre de sus hilos después de algún tiempo. Tus probadores te odiarán por hacerlo. Los nombres de los hilos en aplicaciones bien probadas deberían estar allí para quedarse.

  • cuando tenga subprocesos que sirven una conexión de red, intente incluir la dirección de red de destino en el nombre del subproceso (por ejemplo, channel_123.212.123.3). Sin embargo, no se olvide de la enumeración si hay múltiples conexiones con el mismo host.

Si usted tiene muchos hilos y se olvidó de nombrar a uno, su mecanismo de registro debe emitir una ID de hebra única vez (API específica, por ejemplo, llamando pthread_self())

0

Hmmm ... En las aplicaciones con muchos subprocesos múltiples que he escrito, generalmente he tenido varios subprocesos ejecutando la misma función, por lo que no estoy seguro de que los hilos de nombres sean muy útiles en ese escenario. Dicho esto, asigné a cada hebra un ID entero que se imprimió en los mensajes de registro generados por el hilo para ayudar en la depuración.

Para otras aplicaciones que tenían hilos con funciones únicas dedicadas, sí las nombré descriptivamente ... pero no lo hice porque era una aplicación con hilos, lo hice porque es una mejor práctica de codificación para hacer asi que.

0

Tiendo a denominar los hilos de la misma manera que a los métodos o variables de nomenclatura. Elija algo que describa concisamente el proceso del cual es responsable el hilo. No creo que haya mucha información adicional que puedas o debas poner en un nombre de tema. Expresivo pero cortante es el objetivo principal.

La única convención podría ser añadir un sufijo incrementado a hilos que forman parte de una piscina.

1

hilos de nombres es útil y se debería seguir una convención de nomenclatura que sería para cualquier otra cosa, sean variables, métodos o clases. Nómbrelos de acuerdo a lo que hacen y sean concisos. Si alguna vez se encuentra con un problema que requiere un volcado de hilo, será bueno mirar el nombre y saber dónde buscar en su código el problema en lugar de examinar las trazas de la pila y adivinar.

Lo único diferente es que si hay varios subprocesos del mismo tipo, realmente debería agregar un índice de algún tipo, ya que los nombres de subprocesos deberían ser únicos para satisfacer ciertas API. También puede ayudar con el registro si muestra el nombre de la secuencia para saber cómo se comporta su aplicación y la ejecución parcial ocurre en diferentes hilos.

2

mientras que la respuesta de Thorsten es la más completa, es posible que desee ver cómo Tomcat nombra sus hilos. Lo encontré útil. Estábamos ejecutando varios hilos con un programador de cuarzo y muchas de las reglas de nombres que Thorsten sugiere fueron útiles.

¿Va a utilizar un grupo de subprocesos? Si es así, eso reducirá las posibilidades de que pueda agregar más meta información útil. Si no, el cielo es el límite de la cantidad de información útil que puede tener.

1

¿Qué pasa con:..

[. ... Clase] [Método] [hilo actual] [espacio de nombres] [Clase]?

Así que tienen los nombres:

Biz.Caching.ExpireDeadItems1
Biz.Caching.ExpireDeadItems2
Biz.Caching.ExpireDeadItems3

etc., para cada hilo.

0

He visto varias convenciones de nombres para hilos en .NET.

Algunos prefieren usar 't' en el comienzo del nombre (por ejemplo, tMain Thread) pero no creo que tenga ningún valor real. En su lugar, ¿por qué no usar simplemente nombres descriptivos simples (variables de línea) como HouseKeeping, Scheduler y así sucesivamente.

Cuestiones relacionadas