Go to the Datasim Education BV homepage Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV Datasim Education BV
Courses
Books
Downloads
Information request
Forum



Follow datasim on Twitter

Share this page

COURSE DETAILS
Boost Training




Course Category: 
Course: 


Advanced Boost Interprocess Communication and Networking Libraries  - (code CPP-BIN)

The goal of this intensive 3-day course is to learn and apply a number of libraries in Boost and C++11 that are concerned with interprocess communication, multi-threading, networking and advanced memory management. Using these libraries allows developers to build reliable, efficient and portable applications.

One of the advantages of Boost libraries is that they form an integrated and portable set of modules and classes without having to use proprietary libraries. These libraries support much if not all of the functionality that is present in other C++ libraries but in our opinion Boost is easier to learn and to use in applications.

We have updated the course to reflect new features in both Boost C++ Libraries and C++11/C++14.

Benefits 

This course introduces the techniques needed to write robust and efficient code. The percentage theory/practice is approximately 80/20. The following topics are discussed in detail:

  • Thread essentials and multi-threaded design
  • Advanced thread synchronization, notification and thread patterns
  • Process communication and shared memory
  • Advanced memory allocation
  • Synchronous and asynchronous process and network I/O
  • TCP, UDP and SSL protocols
  • Event-driven signals and slots
  • C++11/C++14 update

 

What do you learn?

This course introduces and examines all the relevant boost libraries that are needed when developing networked and multi-(process, thread) applications. We start with model problems, then we move on to more advanced and extended example (Boost C++ libraries by Demming and Duffy)and we also discuss the application of the libraries to event-driven, real-time data flow and other related problems. The course includes documentation, book and full source code of all examples.

Course updated September 2015


Course contents

Essential C++11

  • Lambda functions
  • Shared pointers
  • Move semantics and movable I/O objects
  • Atomics

Timer

  • Timers overview
  • Measuring elapsed time
  • Automatically display elapsed time
  • Displaying the progress

Dynamic Bitset

  • Dynamic bitset overview
  • Setting and reading bits
  • Bitwise operations

C++ Concurrency

  • Threads
  • Thread Synchronisation
  • Thread Notification
  • Synchronising concurrent operations

Tasks

  • Creating asynchronous tasks
  • Futures and promises
  • One-off limits and time limits
  • Functional programming with futures

Interprocess Communication

  • Process overview
  • Interprocess communication
  • Persistence of IPC mechanisms
  • Shared memory
  • Memory mapped files
  • Mapped regions
  • Pointers in mapped regions
  • Fixed address mapping
  • Static members in mapped region

Interprocess Memory Manager

  • Managed memory segments
  • Managed shared memory
  • Managed mapped file
  • Managed heap memory
  • Managed external buffer
  • Segment manager
  • Allocating memory fragments

Advanced Memory Manager

  • Allocating simple objects
  • Allocating composite objects
  • Synchronising composite object creation
  • Boost STL compatible containers
  • Using allocators to create your own classes that can be stored in managed memory

Interprocess Synchronisation

  • Synchronization mechanisms
  • Named and anonymous synchronization mechanisms
  • Mutexes & scoped locks
  • Condition variables
  • File locks
  • Message queues

System (Boost and C++11)

  • System overview
  • Portable errors
  • Error codes, error conditions and error categories

The Socket Interface

  • Specifying a protocol interface
  • Specifying an endpoint address
  • Client and server calls
  • Using system calls in a program

Asio Concepts

  • Asio internals - The proactor design pattern
  • Threads
  • Strands
  • Streams

Asio Networking Basics

  • Synchronous IO and a-synchronous IO
  • IP address & hostnames
  • Resolving IP addresses using DNS
  • Sockets and end points

Asio UDP communication

  • User Datagram Protocol (UDP)
  • Sending datagrams
  • Receiving datagrams

Asio TCP communication

  • Transmission Control Protocol (TCP)
  • Servers and clients
  • Network streams
  • Secure Sockets Layer (SSL)
  • Timers

Pool

  • Pool overview
  • Simple segregated storage
  • Pool types (simple, object, singleton)
  • Allocators

Boost.Endian

  • An introduction to endianness
  • Goals of Boost.Endian
  • Conversion functions
  • Arithmetic types
  • Endianness in networking, files and byte swap

Signals2

  • Slots and signals
  • Ordering multiple slots
  • Passing values to and from slots
  • Connection management
  • Automatic connection management

UML State charts in Boost

  • Hierarchical (composite, nested) states
  • Orthogonal states
  • Transitions and Guards
  • Event delay

Other relevant Boost C++ Libraries

  • Lockfree
  • Coroutine
  • Context
  • Filesystem

Prerequisites
A working knowledge of C++. Ideally, you develop applications in which these boost libraries can be used.

Who should attend?

Duration, price, date, locations
Course duration 3 days
Price Euro 1475.-- ex. VAT
Euro 1784.75 inc. 21% VAT
Date and location Dates available on request

It is also possible to organize this course at your company premises (the in-company option). If you have any question, please contact our Datasim office.

Share this page

Contact and Profile
Registration form
Course Dates