Category C++

C++ Memory Model and Low-level Atomic Operations

This article and code examples are based on chapter 5 of C++ Concurrency in Action book by Anthony Williams. Chapter 4 is described here. You can download the code here. We will look at low-level details of the C++11 memory model and atomic operations that provide the basis for synchronization between threads through specializations of […]

C++ Events using Condition Variables

This code is from the chapter 4 of the C++ Concurrency in Action book by Anthony Williams and can be downloaded directly from the book companion site. I made some minor changes and compiled it in Visual Studio 2013. Making the code available on MSDN may help many who learn multithreading in C++. Code to chapter […]

Basic thread synchronization in C++

This code is from the chapter 3 of the C++ Concurrency in Action book by Anthony Williams and can be downloaded directly from the book companion site. I made some minor changes and compiled it in Visual Studio 2013. Making the code available on MSDN may help many who learn multithreading in C++. Solution has […]

Ripple Effect in Windows 8.1 Store Applications (C++/CLI)

The sample is a Windows 8.1 application demonstrating simple DirectX effect. This effect will produce a sinusoidal wave across a loaded image, like in a picture below. The code is from the patterns & practices DirectXRipple sample where I upgraded it to VS13, removed deprecated code, and cleaned it up a little. Here’s the solution […]

Histogram on GPU using CUDA

The following sample demonstrates how to compute a histogram on a GPU. CUDA SDK has a histogram sample which works for 64 and 256 bins with code both running on GPU and CPU. SDK CPU code is using bit-manipulation which should be replaced with SSE2 instructions. This article demonstrates 3 simple, entry-level, examples showing the […]

Matrix Transpose on GPU using CUDA

The following sample demonstrates matrix transpose on GPU. It starts with sequential code on the CPU and progresses towards more advanced optimizations, first a parallel transformation on the CPU, then several transformations on the GPU. In real life, it is impractical to do just a single matrix operation on the GPU due to the cost […]

Red-eye Removal with CUDA

This code demonstrates basic steps for red-eye correction in pictures. It requires a picture of someone with red eyes and a small template file which is a picture of a red eye to help us find eyes in the original picture. While the sample works with the picture that I tested it with, it requires […]

Dining Philosophers in C++ 11

I have previously shown how to solve the problem using c#. I have to say that C++ 11 is officially awesome! Here’s my offering using that language. There are numerous solutions to the dining philosophers problem on the internet and I will not be reciting the story. You can find it at one of the following two […]

Producer Consumer inter-thread communication using condition variables in C++

In this example we show inter-thread communication between producer and consumer threads using condition_variable.  In the end two threads will ping-pong passing control to each other. Code can be modified in such a way that producer will read and queue chunks of data from some source while consumer thread will process data from the queue. For example, […]

Producer Consumer inter-thread communication using Monitor in C#

In this example we show inter-thread communication between producer and consumer threads using Monitor Wait and Pulse functions.  In the end two threads will ping-pong passing control to each other. Code can be modified in such a way that producer will read and queue chunks of data from some source while consumer thread will process data from […]