Exportar (0) Imprimir
Expandir todo

ThreadPool.SetMinThreads (Método)

Actualización: noviembre 2007

Establece el número de subprocesos inactivos que mantiene el grupo de subprocesos en previsión de nuevas solicitudes.

Espacio de nombres:  System.Threading
Ensamblado:  mscorlib (en mscorlib.dll)

[SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true)]
public static bool SetMinThreads(
	int workerThreads,
	int completionPortThreads
)
/** @attribute SecurityPermissionAttribute(SecurityAction.Demand, ControlThread = true) */
public static boolean SetMinThreads(
	int workerThreads,
	int completionPortThreads
)
public static function SetMinThreads(
	workerThreads : int, 
	completionPortThreads : int
) : boolean

Parámetros

workerThreads
Tipo: System.Int32
Número mínimo de subprocesos de trabajo inactivos que ha de mantener el grupo de subprocesos.
completionPortThreads
Tipo: System.Int32
Número mínimo de subprocesos de E/S asincrónicos inactivos que ha de mantener el grupo de subprocesos.

Valor devuelto

Tipo: System.Boolean
Es true si el cambio es correcto; en caso contrario, es false.

El grupo de subprocesos mantiene los subprocesos inactivos para reducir el tiempo necesario para satisfacer las solicitudes de subprocesos del grupo de subprocesos. Para los subprocesos de trabajo y los subprocesos de E/S asincrónica se mantienen mínimos independientes. Los subprocesos inactivos que superan los mínimos se finalizan para ahorrar recursos del sistema. El mantenimiento de los subprocesos inactivos es una tarea en segundo plano.

xwy1e3w6.alert_note(es-es,VS.90).gifNota:

GetMinThreads y SetMinThreads recuperan y establecen el número total de subprocesos inactivos mantenidos por el grupo de subprocesos, con independencia del número de procesadores del equipo.

Si especifica un número negativo o un número superior al número máximo de subprocesos activos del grupo de subprocesos (obtenido utilizando GetMaxThreads), SetMinThreads devuelve false y no cambia ninguno de los valores mínimos.

xwy1e3w6.alert_caution(es-es,VS.90).gifPrecaución:

La reducción del número de subprocesos inactivos a un valor inferior al número de procesadores puede afectar negativamente al rendimiento.

Cuando todos los subprocesos del grupo de subprocesos se han asignado a tareas, dicho grupo no empieza a crear nuevos subprocesos inactivos inmediatamente. Para evitar la asignación innecesaria de espacio de pila para los subprocesos, crea nuevos subprocesos inactivos a intervalos. Actualmente el intervalo es de medio segundo, aunque puede cambiar en versiones futuras de .NET Framework.

Si una aplicación está sujeta a ráfagas de actividad en las que se colocan en la cola un gran número de tareas del grupo de subprocesos, utilice el método SetMinThreads para aumentar el número mínimo de subprocesos inactivos. De lo contrario, el retraso integrado al crear nuevos subprocesos inactivos podría crear un cuello de botella. Un pequeño aumento del número de subprocesos inactivos puede producir una mejora significativa del rendimiento.

xwy1e3w6.alert_note(es-es,VS.90).gifNota:

Aumentar innecesariamente el número de subprocesos inactivos también puede producir problemas de rendimiento. Debe asignarse espacio de pila para cada subproceso. Si se inician demasiadas tareas al mismo tiempo, puede parecer que todas se realizan con lentitud. Encontrar el equilibrio correcto es un problema de ajuste del rendimiento.

En el ejemplo siguiente se establece el número mínimo de subprocesos de trabajo inactivos en cuatro y se conserva el valor original del número mínimo de subprocesos de finalización de E/S asincrónica inactivos.

using System;
using System.Threading;

public class Test
{
    public static void Main()
    {
        int minWorker, minIOC;
        // Get the current settings.
        ThreadPool.GetMinThreads(out minWorker, out minIOC);
        // Change the minimum number of worker threads to four, but
        // keep the old setting for minimum asynchronous I/O 
        // completion threads.
        if (ThreadPool.SetMinThreads(4, minIOC))
        {
            // The minimum number of threads was set successfully.
        }
        else
        {
            // The minimum number of threads was not changed.
        }
    }
}


import System.*;
import System.Threading.*;
import System.Threading.Thread;

public class Test
{
    public static void main(String[] args)
    {
        int minWorker = 0;
        int minIOC = 0;

        // Get the current settings.
        ThreadPool.GetMinThreads(minWorker, minIOC);

        // Change the minimum number of worker threads to four, but
        // keep the old setting for minimum asynchronous I/O 
        // completion threads.
        if (ThreadPool.SetMinThreads(4, minIOC)) {
            // The minimum number of threads was set successfully.
        }
        else {
            // The minimum number of threads was not changed.
        }
    } //main
} //Test


Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0, 1.1

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft