Até o STL quem quisesse trabalhar com números complexos em C ou C++ teria que desenvolver sua própria biblioteca. Mas agora temos várias funções para manipulação de números complexos.
(mais…)Categoria: Programação C/C++
std::async é uma função que constrói um std::future baseado em uma função, sem a necessidade de um std::promise, simplificando a utilização de processos assíncronos.
(mais…)Promises fazem parte das novas formas de gerenciar produção e consumo de dados entre threads, basicamente sincronizando a execução de uma thread de geração ou recuperação de dados, com a thread que consome esses mesmos dados.
(mais…)Desde o C é comum utilizar macros para funções genéricas que podem executar a mesma operação em diversos tipos. Macros como MAX, MIN, AVG (média), dentre outros. Com C++11 é possível implementar juntamente com templates e inferência de tipo com typeinfo funcionalidades bem mais complexas.
(mais…)[] () { };
O trecho de código acima é válido para C++11, trata-se de uma função anônima, ou função lambda, e vamos entender melhor como funciona no post de hoje.
(mais…)A inferência de tipo foi adicionada na versão C++11 através da palavra reservada auto. Através da inferência de tipo é possível deixar que o tipo da variável seja determinada em tempo de compilação conforme a sua inicialização.
(mais…)Em C++ é possível avaliar o tipo em tempo de execução, o que pode ser muito útil quando estamos falando de abstração e derivação de classes. Com a função type_id e classe type_info é possível obter informações sobre um tipo, classe, variável ou objetos.
(mais…)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…)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…)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…)