You are here

 

Search



 

 

Follow us

 

coursesynopsis

Developing Multithreaded Applications

It's rare to develop an application or system these days that doesn't end up having have some form of parallel or concurrent processing within. However, if you don't understand the fundamentals of concurrency or the best-practice for multi-threaded design then it's very easy to make bad decisions that result in poor application performance, lack of scalability, detrimental emergent behaviour or even completely broken systems. Noakes has year's of experience in designing and developing concurrent platforms and we are now helping our clients to benefit directly from that experience with the one-day, intensive, course you see below.

To arrange training structured just for you and your needs based on this course or any other material just get in touch. Remember, we can train you on subjects relating to any of the skills and experience we have.

At Noakes we make all of our training educational, lasting, relevant to your business and fun for the attendees. We all know that if you enjoy a course you become better engaged with the content, take more onboard and retain the imparted knowledge far more than if you're bored and disinterested.

Title:

Developing multithreaded applications

Aim:

To make the right design choices when considering concurrency

Length:

1 day

Course Objectives:

The goal of this course is to familiarise students with the key concepts, issues and techniques involved in designing and building reliable multi-threaded applications on today's modern, multi-core, computing platforms, using either native style (C/C++) or VM-type (Java / C#) programming approaches.

Ideal for anyone developing, or about to develop, computing applications but who may be unfamiliar or slightly rusty with regard to best-practice when considering the various options for concurrency that are available.

The course aims to provide a complete briefing on all aspects of concurrent programming and multi-threaded development: from the basic principles of concurrency; through the standard synchronisation, locking and signalling mechanisms required; onto design-time considerations and architectural implications and finishing with a compare-and-contrast session with regard to different operating systems and programming languages.

Deliberately structured to deliver as much practical information as is possible within a single day, this course is essential for anyone venturing into the world of multi-threaded application development.

Course Contents:

The primary course contents are as follows:

  • Mechanics of concurrency
    • At the OS / CPU
    • In user space
    • Tasks
    • Threads
  • Principles of concurrency
    • Locking
    • Synchronisation
    • Atomicity
    • Signalling
  • Issues with concurrency
    • Race
    • Deadlock and Livelock
    • Memory limitations
    • Thread starvation
  • Design and Implementation
    • Are threads required?
    • Thread models
    • Common mistakes
    • Risk and mitigation strategy
    • Startup, shutdown and sleeping
    • Scalability
    • Resource contention
    • Libraries / 3rd-party
    • Debugging and testing
  • Object management
    • Memory management & garbage collection
    • Real-time issues
    • Mitigation strategies
  • Compare-and-contrast
    • Windows
    • Linux
    • C/C++
    • Java
    • C#

Back to courses...