Lecture #14 - Processes and Threads continued

C++11 Threading

Web Resources:

CppReference.com, CPlusPlus.com, C++ TechLinks
Going Native 2013 - many experts
Herb Sutter's Blog, Herb Sutter on C++11, Herb Sutter keynote - Going Native 2012
Scott Meyer's Blog, S.M. on thread suspension, S.M.: C++11 Sampler
Stroustrup's Home Page, Code Project, Boost Library

Content:

This lecture continues discussion of Threads focusing today on C++11 thread models.
  1. Readings:

    The C++ Standard Library, Nicolai Jusuttis, Chap 18: Concurrency
  2. Syllabus
    Describes topics to be covered, reading material for you to digest before coming to class, and due dates for the assigned projects.
  3. Projects:

    Project #2, Project2HelpS17
    Finding File Dependencies from Abstract Syntax Tree

    Project #3 - Code Publisher

    Project #4 - Remote Code Publisher
    Using Regular Expressions with Modern C++

    There will be a Project #1 Grievance Session in CST 4-201 this Friday, 3/3/2017, at 5:00pm.
  4. Threads and Synchronization

    Threads Presentation, pptx
    Process Diagram, Memory Mapped Files, Windows message processing, Windows GUI structure

    Win32 Thread Details, doc

    Simple callable objects demo, Simple C++ Concurrency Demo
    Place to start learning about C++11 threading. Uses async abstraction.

    C++11 Concurrency
    A series of basic demos that cover most of what you need to know for the midterm and projects.

    Blocking Queue
    Thread safe queue that blocks on dequeuing an empty queue.

    Lambda Capture
    Demos for various options when capturing data with lambdas.

    C++11 Thread Techniques
    Illustrations of how to do interesting things that are often needed in project designs.

    Locking Performance - Win32 vs. C++11

    Queued Messages
    Passes messages between threads using Blocking Queue.

    Tasks and Threadpool
    Provides a ThreadPool class. Task is a wrapper around a static ThreadPool.

    Custom Threads and Locks Classes
    C++ class encapsulating Win32 threads. This was written before C++11 and is included only to show how creating a thread class can be accomplished.
  5. Standard Smart Pointers

    std::unique_ptr<T> and std::shared_ptr<T>

    XmlDocument Example - uses std::shared_ptr<AbstractXmlElement>
  6. Thinking about Software Design:

    Software Design
    Broad survey of ideas with examples
    Design Presentation
    Summarizes design issues for modules and classes.
    Design Guidelines
    Design rules and idioms that transcend Object Oriented Design.

    Design Summary

  7. These are the most important items from today's lecture:

    C++11 Concurrency
    A series of basic demos that cover most of what you need to know for the midterm and projects.

    Blocking Queue
    Thread safe queue that blocks on dequeuing an empty queue.

    Lambda Capture
    Demos for various options when capturing data with lambdas.

    C++11 Thread Techniques
    Illustrations of how to do interesting things that are often needed in project designs.

CST strip