Lecture #13 - Processes and Threads

Win32 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 covers Win32 Processes and Threads.
  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:

    Note: - We've received a few projects in rar archives. You were specifically told to submit zips.
    Any submissions of Project #2 in rar format will not be processed.
    If you eventually submit a project in zip format we will grade it and count the late fee from the time of sumission of the zip.

    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

    Windows and C++11 Thread Resources:
    (C++11 concurrency examples next lecture)

    Create Child Process - MSDN

    csdialog demo - why we need threads

    Process Diagram, Memory Mapped Files
    Windows message processing, Windows GUI structure

    Win32 and C++11 Threads Presentation, pptx

    Win32 Thread Details, doc

    Simple callable objects demo, Simple C++ Consurrency Demo
    Place to start learning about C++11 threading.

    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.

    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. 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

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

CST strip