Udemy
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
Turn what you know into an opportunity and reach millions around the world.
Learn More
Your cart is empty.
Keep shopping
Learning Path: C++: High Performance applications with C++
Rating: 3.9 out of 5(42 ratings)
332 students

Learning Path: C++: High Performance applications with C++

Write robust, concurrent and parallel applications to master multithreading and concurrent processing with C++
Last updated 3/2018
English

What you'll learn

  • Capture common pitfalls and gotchas and explore different scenarios using examples
  • See atomic operations in detail: what they are and how they are best used
  • Go through a basic example of multithreading using the native threading support added in the 2011 revision of C++
  • Build upon the fundamentals provided by the hardware implementations
  • Explore an advanced multithreading implementation using C++ 14's native threading API
  • Extend and optimize thread-safety using the features offered by the full feature set in C++ 11 and C++ 14

Course content

2 sections25 lectures2h 54m total length
  • The Course Overview2:29
    This video gives an overview of the entire course.
  • The Humble Debugger4:58
    Of all the questions a developer may have, the question of why did my application just crash? is probably among the most important. This is also one of the questions which are most easily answered with a debugger.
  • Dynamic Analysis Tools17:09
    The purpose of Helgrind is to detect issues with synchronization implementations within a multithreaded application. It can detect wrongful use of POSIX threads, potential deadlock issues due to wrong locking order as well as data races--the reading or writing of data without thread synchronization.
  • Proper Multithreading7:01

    As with most things, it's best to avoid making mistakes rather than correcting them afterwards. This video looks at a number of common mistakes and design issues with multithreaded applications.

  • Mutexes, Locks, and Threads7:15
    There are also gotchas with mutexes, as we will see in this video.
  • GCC3:42

    Like Visual C++, GCC also comes with a set of built-in atomic functions. These differ based on the underlying architecture that the GCC version and the standard library one uses.

  • Memory Order12:35
    Memory barriers are not always used in the C++11 memory model for atomic operations. In the GCC built-in atomics API, this is reflected in the memorder parameter in its functions.
  • Distributed Computing, in a Nutshell8:13

    When it comes to processing large datasets in parallel, it would be ideal if one could take the data, chop it up into lots of small parts, and push it to a lot of threads, thus significantly shortening the total time spent processing the said data.

  • Installing Open MPI8:55
    For the remainder of this section, we will focus on Open MPI. In order to get a working development environment for Open MPI, one will have to install its headers and library files, along with its supporting tools and binaries.
  • MPI Communication9:09

    At this point, we have a functional MPI cluster, which can be used to execute MPI-based applications (and others, as well) in a parallel fashion.

  • Test your knowledge

Requirements

  • Working knowledge with C++ is needed
  • Basic knowledge of multithreading will be useful

Description

Multithreading is an ability of a platform or an application to create a process that consists of multiple threads of execution. Multithreading is used when the parallel execution of some tasks edges to a more productive use of resources of the system. Multithreaded applications execute multiple threads in a single processor environment, allowing developers to achieve concurrency. Multithreading with C++ has diverse benefits as C++ being an intermediate level language and comprises a confirmation of both high level and low level language features. If you're interested to master multithreading and concurrent processing with C++, then go for this Learning Path.

Packt’s Video Learning Paths are a series of individual video products put together in a logical and stepwise manner such that each video builds on the skills learned in the video before it.

The highlights of this Learning Path are:

  • Learn to use tools such as Val grind to analyze the multithreaded performance of an application
  • Explore an advanced multithreading implementation using C++ 14's native threading API
  • Learn how multithreading can be done across multiple systems

Let’s take a quick look at your learning journey...

This step-by-step guide will get you started with examples that will help you become a master at writing robust concurrent and parallel applications in C++.

To get started, this Learning Path gives you a brief introduction to the fundamentals of multithreading and concurrency concepts. The comprehensive coverage of essential multithreading concepts will help you code and apply efficiently multithreading concepts while coding in C++.

Moving on, you’ll learn the finer points of multithreading and concurrency concepts and how to apply them efficiently in C++. After this, you’ll take an in-depth look at how these concepts work at the hardware-level as well as how both operating systems and frameworks use these low-level functions. Finally, you’ll learn about the native multithreading and concurrency support available in C++ like synchronization, and communication between threads. After completing this Learning Path, you’ll have learned the concepts required to be a functional programmer and write functional web-apps using modern JavaScript.

After the completion of this Learning Path, you’ll have mastered multithreading and concurrent processing with C++ as well as write robust, concurrent and parallel applications.

Meet Your Expert:

We have the best work of the following esteemed author to ensure that your learning journey is smooth:

Maya Posch is a software engineer by trade and a self-professed electronics, robotics, and AI nut, running her own software development company, Nyanko, with her good friend, Trevor Purdy, where she works on various game development projects and some non-game projects. Apart from this, she does various freelance jobs for companies around the globe. You can visit her LinkedIn profile for more work-related details. Aside from writing software, she likes to play with equations and write novels, such as her awesome reimagining of the story of the Nintendo classic, Legend of Zelda: Ocarina of Time, and the survival-horror novel she recently started, Viral Desire. You can check out her Scribd profile for a full listing of her writings.

Who this course is for:

  • This Learning Path is for intermediate C++ developers who wish to extend their knowledge of multithreading and concurrent processing.