Nyelv

Thread.BeginThreadAffinity Metódus

Definíció

Értesíti a gazdagépet, hogy a felügyelt kód az aktuális fizikai operációs rendszer szálának identitásától függő utasításokat hajt végre.

public:
 static void BeginThreadAffinity();
public static void BeginThreadAffinity();
[System.Security.SecurityCritical]
public static void BeginThreadAffinity();
static member BeginThreadAffinity : unit -> unit
[<System.Security.SecurityCritical>]
static member BeginThreadAffinity : unit -> unit
Public Shared Sub BeginThreadAffinity ()
Attribútumok

Kivételek

A hívó nem rendelkezik a szükséges engedéllyel.

Példák

Az alábbi példa bemutatja, hogy milyen BeginThreadAffinity módszerekkel és EndThreadAffinity módszerekkel értesítheti a gazdagépeket arról, hogy a kódblokkok egy fizikai operációsrendszer-szál identitásától függenek.

using System.Threading;

public class MyUtility
{
    public void PerformTask()
    {
        // Code that does not have thread affinity goes here.
        //
        Thread.BeginThreadAffinity();
        //
        // Code that has thread affinity goes here.
        //
        Thread.EndThreadAffinity();
        //
        // More code that does not have thread affinity.
    }
}
open System.Threading

let performTask () =
    // Code that does not have thread affinity goes here.
    //
    Thread.BeginThreadAffinity()
    //
    // Code that has thread affinity goes here.
    //
    Thread.EndThreadAffinity()
    //
    // More code that does not have thread affinity.
Imports System.Threading
Imports System.Security.Permissions

<SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.ControlThread)> _
Friend Class MyUtility
    <SecurityPermission(SecurityAction.Demand, Flags:=SecurityPermissionFlag.ControlThread)> _
    Public Sub PerformTask() 
        ' Code that does not have thread affinity goes here.
        '
        Thread.BeginThreadAffinity()
        '
        ' Code that has thread affinity goes here.
        '
        Thread.EndThreadAffinity()
        '
        ' More code that does not have thread affinity.
    End Sub
End Class

Megjegyzések

A közös nyelvi futtatókörnyezet egyes gazdagépei, például a 2005-ös Microsoft SQL Server saját szálkezelést biztosítanak. A saját szálkezelést biztosító gazdagépek bármikor áthelyezhetik a végrehajtó feladatokat egy fizikai operációsrendszer-szálról egy másikra. A legtöbb feladatot ez a váltás nem érinti. Egyes feladatok azonban szál affinitással rendelkeznek, vagyis egy fizikai operációsrendszer-szál identitásától függenek. Ezeknek a feladatoknak tájékoztatniuk kell a gazdagépet, amikor olyan kódot hajtanak végre, amelyet nem szabad váltani.

Ha például az alkalmazás meghív egy rendszer API-t egy olyan operációsrendszer-zárolás beszerzéséhez, amely szál affinitással rendelkezik, például Egy Win32 CRITICAL_SECTION, a zárolás beszerzése előtt és BeginThreadAffinity a zárolás feloldása után hívnia EndThreadAffinity kell.

A 2005-ös SQL Server alatt futó kódban ezt a metódust használva a kódot a legmagasabb gazdagépvédelmi szinten kell futtatni.

A következőre érvényes:

Lásd még