Lab C++

Codificação Eficiente

Não basta conhecer a sintaxe, é preciso conhecer a linguagem, saber a melhor forma de fazer.

Tags: c++

Threads em C++ – Parte 3: Objetos Atômicos

Objetos Atômicos são objetos que passam por alterações atômicas, ou seja, que não podem ser divididas, tornando-se seguras para acesso por múltiplas threads, sem risco de racing condition, nem de deadlock.

(mais…)

Threads C++ – Parte 2: Mutex

Quando falamos de processamento paralelo existe um problema que pode escalar de maneira muito destrutiva, são as racing conditions, ou condições de corrida. São situações em que vários processos ou threads que estão rodando em paralelo competem pelo mesmo recurso, causando problemas e bugs que podem se tornar bem destrutivos.

(mais…)

Threads em C++ – Parte 1

Thread é um assunto importante em qualquer linguagem moderna. Atualmente é muito comum encontrar desktops com múltiplos núcleos, isso sem contar os servidores que há décadas contam com múltiplos processadores. Por conta disso sistemas capazes de tirar proveito dos múltiplos núcleos e/ou processadores são muito relevantes.

(mais…)

STL Algorithms: Mínimos e Máximos

É normal precisar selecionar o mínimo e o máximo de um conjunto de dados, e a STL conta com funções específicas para determinar mínimos e máximos, alguns referem-se a valores discretos, outros a faixas de valores em containers.

(mais…)

STL Algorithms: Permutações

As funções de permutações do STL são utilizadas para criar permutações de um conjunto de dados, ou seja exibir, uma a uma, todas as possibilidades de distribuição de dados. Pode ser muito útil em diversa aplicações.

(mais…)

Usando namespaces

Muita gente usa namespace e não sabe exatamente nem por quê, nem como funciona. Namespaces é uma forma de isolar identificadores com contexto global, evitando o conflito de nomes. Assim podemos criar novos identificadores sem nenhuma preocupação se eles estão em uso por parte de outro trecho do código, ou por outra biblioteca.

(mais…)

Usando Sockets com C++ – Parte 2: Cliente

Dando sequência à série de desenvolvimento com sockets usando boost::Asio em C++ o post vai demonstrar como fazer um cliente echo que procura o servidor na rede local, nos moldes do que já foi feito com C.

(mais…)

Usando Sockets com C++ – Parte 1: Servidor

Nos dois posts anteriores foi demonstrado como utilizar sockets com C. Agora vamos ver a diferença entre C e C++, utilizando boost::Asio.

Boost é um conjunto de bibliotecas para C++ tão popular que é praticamente considerado padrão. Conta com uma grande opção de bibliotecas para os mais diversos fins, incluem bibliotecas para IO, funções matemáticas, threads, processamento paralelo, date/time, dentre diversas outras.

(mais…)

Implementando Pilha com Lista Ligada em C++

No último post implementamos uma pilha usando lista ligada usando C, neste post vamos implementar a mesma pilha, mas utilizando orientação a objetos. O foco é na implementação correta da uma estrutura de dados, em primeiro lugar os dados, e depois o algoritmo que manipulam os dados.

Os dois posts em conjunto vão servir para ilustrar a importância da estrutura de dados sobre o algoritmo. No próximo post vamos discorrer um pouco mais sobre porque dar tanta importância aos dados e não ao algoritmo.

(mais…)

Operações com Tempo em C++

A versão C++11 da linguagem C++ incluiu um novo conjunto de classes, funções e tipos para manipulação de tempo. O namespace std::chrono contém algumas ferramentas que trazem para a linguagem C++ o que até então somente estava disponível através do header <time.h> do C.

(mais…)