*   >> Leitura Educação Artigos >> science >> programação

Rosqueamento em Dot Net 2.0 - cópia separada da variável estática entre os diferentes segmentos usando attribute

ThreadStatic

unidade básica de execução do Windows é um fio. Isso significa que a WIN não executar processos; em vez disso, ele executa threads. Threads são sequências de código que executam multitasked em pilhas individuais. Um segmento tem sua própria seqüência de código, que é executado de forma simultânea. Então tópicos nos ajudar a alcançar o processamento concorrente. WIN Scheduler controla a execução de todas as threads em execução em um sistema. Em WIN, cada segmento tem sua própria prioridade, numeradas de 0 a 31, com base no qual GANHAR agenda a execução de cada segmento.

Quanto maior o número de prioridade, a prioridade mais elevada do segmento. Um processo pode ter um único segmento ou vários segmentos. Um único processo tem de ter um mínimo de um segmento. Os processos podem gerar threads e pode terminar tópicos

Abaixo Programa mostra como cada thread mantém uma cópia separada do mesmo variável estática usando ThreadStatic atribuem

using System;.

using System. Collections.Generic;

usando System.Text;

using System.

Threading;

namespace Thread_Programming

{

classe ThreadStaticProgram

{

[ThreadStatic]

estático seqüência threadStaticVariable = "";

Principais void (string [] args) estáticos

{

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

threadStaticVariable = "Thread principal";

Console.

WriteLine ("thread principal Antes Para loop = {0} ", threadStaticVariable);

Tópico [] = new Thread tópicos [3];

for (int i = 0; i

​​{

tópicos [i] = new Thread (delegado (objeto j) {

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

threadStaticVariable = "Thread" + j;

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

}

);

tópicos [i] .Start (i);

}

Array.ForEach (threads, delegado (Linha t) {t.Join (); });

Console.

WriteLine ("thread principal depois de For Loop = {0}", threadStaticVariable);

Console.ReadLine ();

}

}

}

Resultado em Console Tela:

thread principal Antes

thread principal Antes For Loop = thread principal

Thread0 antes =

Thread1 antes =

Thread1 após = Thread1

Thread0 após = Thread0

Thread2 antes =

Thread2 depois = Thread2

Page   <<       [1] [2] >>
Copyright © 2008 - 2016 Leitura Educação Artigos,https://artigos.nmjjxx.com All rights reserved.