[DICA — C#/Série Certificação] — Manage Program Flow — Parte 1

Cleiton Felipe
3 min readJul 27, 2018

Fala galera beleza,

Recentemente voltei aos estudos para obter as certificações Microsoft, e você pode conferir quais estão disponíveis para realização neste link.
Então resolvi começar a registrar meus códigos de exemplo no GitHub, e para não ficar escrevendo textos gigantescos nos comentários resolvi incluir na série “Dicas de C#” que já venho disponibilizando algumas coisas aqui no blog.

Obs.: Todos os fontes terão um comentário do que a classe e métodos estão realizando em tempo de execução.

Nestes primeiros posts da Série Certificação que é uma “branch” do Dicas de C# :D, estarei falando sobre Threads que faz parte do primeiro capítulo(Manage Program Flow) do guia de certificação oficial da Microsoft Programming in C# — 70–483.
Vamos lá?

Primeiramente vamos imaginar o seguinte cenário:

Seu computador tem apenas uma CPU (center processing unit/unidade central de processamento) logo o mesmo executa apenas uma operação por vez, dependendo da situação não tem problema algum mas e se este processamento durar muito tempo? Ou pior e se este processamento entrar em looping devido a algum bug?

Vamos falar um pouco mais de conceito deste cenário, tendo apenas uma unidade de processamento, quando esta rotina começar a ser executada todas as outras atividades do seu computador vão ser pausadas, logo toda a sua maquina ficará inacessível para o usuário.

OPA acabamos de achar um problema, certo? Então se ele entrar no looping que falei anteriormente este processo nunca irá ser encerrado e com isso precisaremos restartar a maquina e isso não é uma coisa muito legal.

Para tentarmos não ter mais este problema ou melhor, não chegarmos neste problema podemos utilizar as Threads para nos ajudar com isso.

Desde algum tempo os computadores são capazes de rodar cada aplicação em seus próprios processos, cada processo próprio da aplicação isola a mesma de outras aplicações criando um tipo de “memoria virtual” que certifica que diferentes processos não venham influenciar outros processos que estão em execução naquele momento. Isso significa que cada processo roda dentro de sua própria Thread. A Thread é como se fosse uma CPU virtualizada, neste caso se uma aplicação quebrar ou entrar em um loop infinito a mesma não vai impactar nas outras aplicações.

Falando de Windows o mesmo deve gerenciar todas as Threads para certificar se elas podem ser executadas ou não. O Windows permite que as threads sejam executadas por um certo tempo, este tempo finalizado a thread é pausado pelo Windows que passa para outra thread a autorização para a execução, isso é chamado de context switching ou em português “Mudança de contexto”.

Desta maneira o Windows tem algum trabalho para realizar, a thread corrente utiliza uma parte da memoria, o Windows precisa salvar todo o contexto da thread e restaurar para cada mudança executada. Desta maneira uma thread não precisa esperar uma outra thread finalizar para ela ser executada, isso nos da a sensação de múltiplas tasks sendo executadas em paralelo, assim podemos cria aplicações que use o paralelismo e isso significa que podemos executar múltiplas threads em diferentes CPU´s em paralelo.

Bom isso já nos dá uma boa visão de como uma Thread funciona na teoria.

Como este post já ficou um pouco grande no próximo vamos estar colocando mais a mão no código.

É isso galera até o próximo post!

Referências: https://www.amazon.com.br/Exam-Ref-70-483-Programming-MCSD/dp/0735676828

--

--

Cleiton Felipe

Pai do Pedro, casado com Janna Granado, Software Developer, Co-founder/Community Manager da SoroCódigos, adoro desenvolver soluções