Asynchronous Programming Design Patterns - C/C++
What you'll 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
Requirements
- 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 witZeal to learn and excel - beyond what Crowd is doing ( DS/ALGO/CP )h basic Data structures such as Linked-List.
Description
*** 12 June 2022 - 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
Who this course is for:
- Warning : Not for Absolute beginners in Programming
- Who want to take their programming Skills from Beginner to Professional Level
- Final year students looking to crack the Interview Questions on OS, Multithreading Concepts
Instructors
I have been engaged with coding and software for a decade now. I am a Networking developer at MNC. My rich working experience is backed by graduation from IIT Bombay as an MTech specialist. I am restless for more in-depth knowledge, and always working out the ways to integrate what I know in practical ways. I am always happy to train and encourage people on Udemy – the next-gen education platform.
I will help you to strengthen the networking concepts and fundamentals in a very practical way. I also hones in System Software Development, Linux System Programming and Network Software Development. I love to create courses on unique non-standard topics, and projects. Check my catalogue, you will find couple of project based courses which you can add to your resume.
You’ll complete assignments and work on a project where you’ll use all the theory. I make sure you build a proper understanding and that you’ll get all the questions and doubts answered. Let me take the privilege to guide you and bring useful additions to your resume !
Hi, I am Ekta, a facility Manager for Csepracticals. I am responsible for the maintenance and upkeep of an organization’s infrastructure, ensuring that they meet legal requirements and health and safety standards.
I ensure that the facility is operating as it should on a daily basis by completing daily inspections and conducting proactive and reactive maintenance.
Hi, Myself Shivani Nigam, PhD in Marketing. I expertise in researching the consumer behavior in the context of purchasing the products online. I take the responsibility of marketing the online content (Udemy courses) on this platform.
I also ensure the courses are delivered with perfect Audio/Video Quality by technical Instructors, and ensures that students queries and doubts are addressed by technical instructors with priority.