Processos e threads

Nos anos 80 era comum o fato de uma aplicação conter um único processo que executasse um único fluxo de execução. Aplicativos mais complexos, que continham concorrência entre atividades internas, exigiam uma mudança neste comportamento e foram base para uma revolução no modo como os sistemas operacionais funcionavam.

Nesta época percebeu-se que era preciso aprimorar o funcionamento dos processos para que eles fossem associados a múltiplas atividades concorrentes.

Hoje os processos consistem de um ambiente de execução que gerencia diferentes recursos. Dentre estes recursos encontramos as threads, que correspondem a uma abstração do sistema operacional para uma atividade a ser executada.

Saiba mais

About these ads

MemoryCache

Disponível desde a versão 4 do .NET Framework, a classe MemoryCache funciona de maneira similar ao cache do ASP.NET, exceto pelo fato de que a classe MemoryCache foi criada para ser utilizada em qualquer tipo de aplicação .NET, não apenas em aplicações ASP.NET.

Outra vantagem da classe MemoryCache é que ela é thread safe. Essa característica assegura o seu uso em operações assíncronas, operações executadas paralelamente e acessos originados de diferentes threads.

Saiba mais

AppDomain.FirstChanceException

Depois que uma exception é lançada o CLR começa uma busca no call stack por um bloco que faça o tratamento dessa exception.

O AppDomain.FirstChanceException é um evento que ocorre antes do CLR começar a procurar no call stack por um ponto da aplicação que faz o tratamento dessa exception, isto é, antes da exception ser tratada este evento é acionado.

Este evento funciona como um notificador, não afetando a exception ou cancelando o seu disparo. 

Saiba mais

Redimensão de imagens (C# + WPF + MVVM + Asynchronism + Comentários)

Redimensão de imagens é uma tarefa comum do dia-a-dia para quem trabalha com computadores. Redimensionamos imagens em tarefas do trabalho, lazer, e do cotidiano. Esta é uma tarefa que pode ser executada facilmente com um editor de imagens, mas é bastante custosa quando queremos redimensionar um conjunto de imagens.

Por conta do trabalho (e tempo) gasto com a redimensão de múltiplas imagens, e pela vontade de não depender da instalação de nenhum editor de imagens, acabei por criar um programa que faz essa redimensão em massa. Fiz isso quatro anos atrás e, como o programa se tornou “popular” entre amigos e familiares, percebi que era preciso fazer uma nova versão com tecnologias mais novas.

app-resizeme-512

Saiba mais

Foreground threads e Background threads

O CLR considera que existem dois tipos de threads: foreground e background threads.

Foreground threads executam com uma prioridade elevada. Esse tipo de thread evita que a aplicação se encerre antes que tenham executado todo o seu trabalho.

Em contraponto, as background threads não são executadas com prioridade elevada. Background threads são finalizada imediatamente pelo CLR assim que todas as foreground threads de uma aplicação (leia managed assembly) encerram sua execução, sem lançar nenhuma exceção.

Saiba mais

O Garbage Collector e seu funcionamento…

Sem o garbage collector seu código não seria como ele é hoje. Provavelmente você se preocuparia muito mais com o consumo de recursos e descarte de instâncias de objetos não mais utilizadas. Também é fato que pouco se pensa sobre o funcionamento do garbage collector. Este post visa destacar brevemente o funcionamento do garbage collector.

clip_image001

Saiba mais

Delegate Chain Invocation

Callback functions são blocos de código executável que são passados como parâmetro para outro código, que fica responsável por invocá-los quando apropriado.

O modo como callback functions são suportados em cada linguagem de programação é diferente, mas são frequentemente implementados como subrotinas, expressões lambdas ou ponteiros de função.

O tratamento das linguagens não-gerenciadas sobre os callback functions é limitada a apenas um endereço de memória. Este endereço de memória não contém nenhuma informação adicional sobre o tipo de retorno, o número de parâmetros ou os tipos de dados dos parâmetros.

Saiba mais

Desenvolvendo com o Kinect para o Windows.

Nós presenciamos o lançamento de novas tecnologias que mudam o nosso dia-a-dia. Quando digo que “mudam nosso dia-a-dia” me refiro ao fato de passarem a integrar o modo como realizamos nossas tarefas do cotidiano.

clip_image002

Alguns exemplos claros são: o smartphone, o micro-ondas, o computador, o tablet e a televisão. Isso é claro… isso é óbvio! Mas, existem outras criações que são tendências, e que ao meu ver, em questão de cinco anos, estarão totalmente integradas ao nosso dia-a-dia, como os aparelhos citados anteriormente.

Saiba mais

Computação Paralela – Paralelismo com C#

Provavelmente você já deve ter ouvido falar sobre processamento paralelo, paralelismo ou computação paralela. Todos estes termos se referem à forma de computação na qual vários cálculos são realizados simultaneamente, resolvidos de forma separada e concorrente (em paralelo).

A computação paralela é utilizada há muitos anos, principalmente em cenários de alto desempenho que exigem processamento pesado.

final-logo-par-72dpi

Saiba mais

HasPrecision – Definindo a precisão de campos decimais.

Uma tarefa comum, quando trabalhamos com sistemas financeiros (ou matemáticos), é a necessidade de lidar com a precisão de casas decimais de nossos campos numéricos. Muitas vezes, neste tipo de sistema, o uso de apenas duas casas decimais não é suficiente para armazenar toda a precisão numérica dos valores utilizados. E o Entity Framework fornece recursos para que trabalhemos com diferentes precisões numéricas em campos decimais.

numbers

Saiba mais

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 63 outros seguidores