Compartir a través de


No trate las fibras como subprocesos

Actualización: noviembre 2007

     TypeName

DoNotTreatFibersAsThreads

Identificador de comprobación

CA2003

Categoría

Microsoft.Reliability

Cambio problemático

No problemático

Motivo

Un subproceso administrado se trata como un subproceso de Win32.

Descripción de la regla

No debe darse por hecho que un subproceso administrado es un subproceso de Win32: es una fibra. Los CLR ejecutarán los subprocesos administrados como fibras por encima de los subprocesos reales que son propiedad de SQL. Estos subprocesos se compartirán entre los AppDomains e incluso entre las bases de datos en el proceso de SQL Server. El uso del almacenamiento local de subprocesos administrados funciona, pero no puede utilizarse el almacenamiento local de subprocesos no administrados ni suponerse que el código se vaya a ejecutar de nuevo en el subproceso del SO actual. No cambie valores de la configuración del tipo de la configuración regional del subproceso. No llame a CreateCriticalSection ni a CreateMutex mediante P/Invoke porque requieren que el subproceso que entra en un bloqueo también salga de él. Dado que esto no sucede cuando se utilizan fibras, las secciones críticas de Win32 y las exclusiones mutuas no tendrán utilidad alguna en SQL. Puede utilizar sin ningún riesgo la mayor parte del estado en un objeto System.Thread administrado, lo que incluye el almacenamiento local de subprocesos administrados y la referencia cultural de la Interfaz de usuario actual del subproceso. Sin embargo, a causa del modelo de programación, no podrá cambiar la referencia cultural actual de un subproceso cuando se ejecute en SQL; esto se lleva a cabo mediante un nuevo permiso.

Cómo corregir infracciones

Examine su uso de los subprocesos y modifique el código en consecuencia.

Cuándo suprimir advertencias

Esta regla no se debe suprimir.