2011-05-11 14 views
6

Al enviar objetos contados de referencia a otros hilos, ¿es mejor una regla general para incrementar el conteo antes de iniciar el hilo o dentro del hilo?¿Cuál es la regla de oro para incrementar los recuentos de referencia?

En un sentido más general, ¿debería (como función) asumir que los parámetros pasados ​​a mí ya están contabilizados o no?

+0

¿A qué tecnología se refiere esto? Diferentes tecnologías bien pueden tener diferentes respuestas. (@closevoter: Me parece una pregunta real. Puede necesitar un poco de aclaración, pero ...) –

+0

Buen punto, me refiero específicamente a C, pero creo que puede aplicarse a cualquier idioma que no lo haga tener el recuento de referencias implementado de forma nativa. –

Respuesta

4

Incrementar el recuento dentro de un nuevo hilo al que pasa el objeto es casi seguro que está mal. Se puede ejecutar una cantidad arbitraria de código en el subproceso "principal" antes de que se ejecute el nuevo subproceso "secundario", en cuyo caso la función en el "padre" podría regresar, hacer otras cosas, disminuir el recuento de referencia a 0 y libera el objeto. El nuevo hilo tocará la memoria no válida, invocando un comportamiento indefinido, y todo el infierno se perderá.

Tenga en cuenta que estos errores probablemente no se detecten durante mucho tiempo, ya que es estadísticamente inusual que el nuevo hilo no se ejecute inmediatamente. De hecho, probablemente sean sus clientes/clientes quienes vean el error primero ... :-)

+0

¡Gracias! Esa es la pieza que no pude conjurar ... la parte del padre que libera la referencia antes de que el niño pueda reclamarla. –

Cuestiones relacionadas