Monday, January 24, 2011

ReadWriteLock em C++ no Windows com Mutex e Event

Assim como o Java possui o ReentrantReadWriteLock, o C# possui ReaderWriterLock. Que tal então uma classe que implementa o controle de concorrência para leitura e escrita em C++ nas aplicações Windows.

Monday, January 17, 2011

Volt-Amperímetro com Arduino - Parte Final: Circuito impresso

Depois de todo o trabalho construindo o protótipo e fazendo o código funcionar, chegou a hora de construir o circuito. Não é o objetivo explicar detalhadamente como fazer circuitos impressos, mas somente uma passada superficial sobre o assunto, além, é claro, apresentar as modificações no projeto para que ele funcione fora da placa do Arduino.

Monday, January 10, 2011

Volt-Amperímetro com Arduino - Parte 1: Protoboard

Estava procurando algum projeto de um dispositivo real para sair das "blinking leds" dos tutoriais de Arduino e montar um dispositivo que fosse útil de alguma forma. Sempre achei confuso ter que colocar dois voltímetros, além do excesso de fios espalhados, inclusive ja queimei a maioria das escalas de corrente dos meus voltímetros, ao medir corrente e voltagem simultâneamente. Por isso me interessei por um projeto de voltímetro e amperímetro digital, além de ser o companheiro ideal para fontes reguláveis caseiras de testes em bancada.

Tuesday, January 4, 2011

STL Allocator com low-fragmentation heap

O STL provê uma série de estruturas de dados, como o std::list ou std::vector, normalmente chamados de containers. Esses containers possuem a capacidade de mudar de tamanho durante a execução do aplicativo, para isso ele se utiliza dos alocadores dinamicos, ou simplesmente allocators. O STL ja provê os alocadores padrão para uso geral, porém também é possível desenvolver um alocador para ser usado com os containers. A desvantagem dos alocadores padrão é que se utilizam diretamente de new/delete, assim como malloc/free, o que acarreta implicações no desempenho que não devem ser ignoradas.

Saturday, January 1, 2011

Gerenciamento de memória em aplicações Windows

Ao contrário do que muitos pensam, um aplicativo feito em C/C++ não tem obrigatoriamente que ser mais rápido que outro feito em Java ou C#, pois essas plataformas, por já serem concebidas para serem mais *lentas*, normalmente já trazem embutidos os melhores métodos para a maioria das tarefas comuns dos aplicativos. Entre esses métodos, um dos mais importantes a destacar é o gerenciamento de memória através de heap space.