Asynchronous Programming Design Patterns - C/C++

System Programming, C/++, Multithreading Concepts, Thread Synchronization, Operating System Project Courses, Event Loops

4.32 (51 reviews)
Udemy
platform
English
language
Programming Languages
category
Asynchronous Programming Design Patterns -  C/C++
1,136
students
7 hours
content
Mar 2024
last update
$64.99
regular price

What you will learn

The Art of Asynchronous Programming

How to Communicate in an Asynchronous way

Writing a Computation Scheduler

Reducing Multithreaded Application to Single Threaded

Designing and Implementing Asynchronous Software's

Implementing Concurrency in a Single Threaded Applications

Event Loop Design and Implementation

Implementing blocking and Non-Blocking Calls

Description

30 Nov 2023 - This Course is under Development 


Welcome to the World of Asynchronous Programming!!


Asynchronous programming is used anywhere where your application interacts with other external entities - be it other threads, other processes. This world by its nature is Asynchronous. Asynchronous literally means - anything can happen anytime - unpredictable. How do you write software through Asynchronous programming? That's what we shall be going to learn in this course.  Big software projects of reasonable sizes are Asynchronous. Software projects leave their synchronous boundaries the moment it starts integrating and communicating with external entities or go multithreaded.

Asynchronous programming is widely used in Distributed Systems, Networking Protocols, Distributes Databases, etc.


The prerequisite of this Course :

Know Thread Synchronization Concepts - Mutexes and Condition Variables ( any thread library, but we will be using pthreads )

C or C++ in preferable, but if your fav language is any other mainstream language then also it is ok. Borrow the concepts and implement it in your fav language.

Comfortable with basic Data structures such as Linked-List.

Zeal to learn and excel - beyond what Crowd is doing ( DS/ALGO/CP )


The end product of this Course shall be a mini library yet very powerful library which allows you do develop software through Asynchronous programming.


Course Difficulty Level :

The Course is level is Intermediate to Advanced. Very beginners pls refrain from enrolling into the Course.



Software Designing Problems to Address in this Course :


Problem 1. Simulating Concurrency in Single-Threaded Programs

problem 2. Reducing Multi-threaded Programs to Single Threaded

Problem 3. Work Deferrals

Problem 4. Asynchronous Communication

Problem 5. Queuing and Processing Incoming Network Packets




OLD Table Of Contents :

1. What is Synchronous Programming?

2. What is Asynchronous Programming?

3. When to use Asynchronous Programming?

4. Pre-requisites

5. Developing an Asynchronous Programming based Project

6. Adding a CLI user Input

7. Adding Listener Threads

8. Adding Timer

9. Adding Periodic Advertisements

10. Analyzing Problems in the projects

11. Designing Event Dispatcher ( Also Called Event Loop ) ( ED )

12. Integrating Event Dispatcher to the Project

13. Serializing User CLI input using ED

14. Serializing Timer Internal events using ED

15. Serializing Packet Processing using ED

16. Serializing Periodic Advertisements

17. Event Distribution using ED

18. Progressive Partial Processing using ED

19. Analyzing our Project

20. Futures and Promises

21. Promises Pipeline and Combinators

22. Thread Pools

23. Synchronous Vs Asynchronous Vs Concurrency

24. Creating Worker Threads for expensive work


Good luck ! Happy Learning.


After doing this course You would understand :

  • Problems with Synchronous programming

  • Design and Implement Asynchronous Application/Softwares

  • What type of applications/softwares must not be multi-threaded

  • What type of applications/softwares must be asynchronous

  • Say good bye to locking and thread synchronization for forever.

The Concepts you would learn in this course are portable to other programming languages of your choice

Content

Understanding the term Asynchronous

Agenda
Code Access for this Course
Synchronous Vs Asynchronous Example 1
Synchronous Vs Asynchronous Example 2
Asynchronous Vs Multi-Threading
Asynchronous Multi-Threading Design Models
Course Layout

Getting Started with Asynchronous Programming

Goals of this Section
Event Loop Internal Functioning
Code Access for this Course
Event Loop Data Structures
init( ) and run( ) API Implementation
Importing Helping APIs
EL Thread Implementation
Task Submission
Demo 1 - Event Loop Usage Demo
Demo 2 - Single Threaded Concurrency
Why we need locking in Multi-threaded env ?
Why Event Loops are lock free ?
Event Loop provides Concurrency, but no Parallelism

Appendix A - Understanding Producer Consumer Synchronization

Understanding Producer Consumer Synchronization
Producer-Consumer Loop Hole Check

Appendix B - Understanding Concurrency and Parallelism

Why do we need Concurrency ?
Concurrency Example 1
Concurrency Example 2
Bonus

Reviews

Sanaz
July 27, 2023
Excellent course to learn the basic of asynchronous programming. Highly recommend to follow the course in this order: section 1, 5, 6, 7, 8, then section 2, 3, 4.
Artur
March 20, 2022
Above expectations! Finally a course discussing and implementing real problems and solutions! Suggestions to authors: - Assignment should be at the end of the course. - Appendices should be referenced with originating courses.
Asheesh
December 18, 2021
Clear explanation with example of Async. vs Sync, programs. It's advantages and how to implement it, independent of Programming Languages and O/S.

Charts

Price

Asynchronous Programming Design Patterns -  C/C++ - Price chart

Rating

Asynchronous Programming Design Patterns -  C/C++ - Ratings chart

Enrollment distribution

Asynchronous Programming Design Patterns -  C/C++ - Distribution chart
4328462
udemy ID
10/1/2021
course created date
1/3/2022
course indexed date
Bot
course submited by