Thread.BeginThreadAffinity Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
É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.