Thread.BeginThreadAffinity Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Upozorní hostitele, který spravovaný kód chystá spouštět instrukce, které závisí na identitě aktuálního vlákna fyzického operačního systému.
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 ()
- Atributy
Výjimky
Volající nemá požadované oprávnění.
Příklady
Následující příklad ukazuje použití BeginThreadAffinity a EndThreadAffinity metody k upozornění hostitele, že blok kódu závisí na identitě fyzického vlákna operačního systému.
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
Poznámky
Někteří hostitelé modulu CLR (Common Language Runtime), například Microsoft SQL Server 2005, poskytují vlastní správu vláken. Hostitel, který poskytuje vlastní správu vláken, může kdykoli přesunout spuštěnou úlohu z jednoho vlákna fyzického operačního systému do jiného. Toto přepnutí nemá vliv na většinu úkolů. Některé úlohy však mají spřažení vláken – to znamená, že závisí na identitě fyzického vlákna operačního systému. Tyto úlohy musí hostitele informovat při provádění kódu, který by neměl být převeden.
Pokud například vaše aplikace volá systémové rozhraní API pro získání zámku operačního systému, který má spřažení vláken, například win32 CRITICAL_SECTION, musíte volat BeginThreadAffinity před získáním zámku a EndThreadAffinity po uvolnění zámku.
Použití této metody v kódu, který běží pod SQL Server 2005 vyžaduje, aby byl kód spuštěn na nejvyšší úrovni ochrany hostitele.