*   >> Lecture Éducation Articles >> science >> la programmation

Enfiler dot net 2.0 - copie distincte de variable statique entre les différents threads utilisant attribute

ThreadStatic

de Windows unité d'exécution de base est un fil. Cela signifie que WIN ne pas exécuter les processus; à la place, il exécute les discussions. Threads sont des séquences de code qui exécutent multitâche sur piles individuelles. Un thread a sa propre séquence de code, qui est exécuté d'une manière simultanée. Donc, les discussions nous aident à atteindre le traitement simultané. WIN Scheduler contrôle l'exécution de tous les threads dans un système.

Dans WIN, chaque thread a sa propre priorité, numérotés de 0 à 31, sur la base duquel GAGNER horaires à l'exécution de chaque thread. Plus le nombre de priorité élevé, plus la priorité du fil. Un processus peut avoir un seul thread ou plusieurs threads. Un seul processus doit avoir un minimum d'un fil. Les processus peuvent engendrer des fils et peuvent résilier les discussions

Ci-dessous programme montre comment chaque thread conserve une copie distincte de même variable statique à l'aide ThreadStatic attribut

using System;.

using System. Collections.

Generic;

using System.Text;

utilisant System.Threading;

namespace Thread_Programming

{

classe ThreadStaticProgram

{

[] ThreadStatic

static string threadStaticVariable = "";

static void main (String [] args)

{

Console.WriteLine ("thread principal Avant {0}", threadStaticVariable);

threadStaticVariable = "thread principal";

Console.

WriteLine ("thread principal Avant Pour loop = {0} ", threadStaticVariable);

Discussion [] threads = new Thread [3];

for (int i = 0; i

​​{

fils [i] = new Thread (délégué (objet j) {

Console.WriteLine ("Thread {0} avant = {1}", j, threadStaticVariable);

threadStaticVariable = "fil" + j;

Console.WriteLine ("Thread {0} après = {1}", j, threadStaticVariable);

}

);

fils [i] .Start (i);

}

Array.ForEach (fils, délégué (filetage t) {t.Join (); });

Console.

WriteLine ("thread principal après boucle For = {0}", threadStaticVariable);

Console.ReadLine ();

}

}

}

résultat à l'écran de la console:

thread principal Avant

thread principal Avant de boucle For = thread principal

Thread0 avant

=

Thread1 avant

=

Thread1 après = Thread1

Thread0 après = Thread0

Thread2 avant

=

Thread2

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Lecture Éducation Articles,https://lecture.nmjjxx.com All rights reserved.