Hello, guys.
Welcome to this course.
So let's quickly go through the agenda of this course.
So this course is divided into two parts.
The first part is the general Multithreading and the second part we will cover thread synchronization.
So the approximate length of this course is approximately 12 hours In general Multithreading section,
we will going to cover thread creation and destruction.
We will discuss the difference between Multithreading concurrency parallelism.
We will discuss what are joinable detached threads and we will also discuss race conditions and how
to handle race conditions.
Then we will discuss the important aspects of the Multithreading is the thread cancellation and how
to create listener threads.
We will also discuss how threads can process and return results.
And finally, in general Multithreading section, we will discuss how different threads in the same
process can actually exchange data with each other.
And we will discuss how as a developer you can take a control to pause and resume the threads at your
will in the thread synchronization portion, we will going to cover critical section Mutexes Locks and
deadlocks.
We will discuss in detail what is condition variable?
How does it differ from mutex?
We will discuss weight and signal system call and how to use broadcast system call right using these
condition variable and mutexes.
We will going to do certain standard problems such as producer, consumer problem dining philosopher
problem and we will going to discuss what is a spurious wakeups, which is a fundamental problem to
multithreading.
And then finally we will going to discuss semaphores and what are zero one semaphores and we will discuss
how you can implement your own semaphores.
And finally, towards the end of this course we will going to discuss the thread management and by the
end of this course we will be in a position to proceed to sequel or advanced version of this course,
which is a Part B, and in that course we will going to discuss the advanced concepts in thread synchronization
as well as it will also open up the doors for us to do asynchronous programming concepts, which is
pretty much advanced concepts.
And coming to the prerequisite, the prerequisite of this course require you to have C and C plus plus
programming skills.
Now the level of programming skills required is not an expert.
Even if you are just better than basic or intermediate level, you are good to go and very basic knowledge
of data structures is required because at certain places we will going to use link list.
And this is purely a course which uses Linux machine.
You can run any Linux distribution either natively or as a virtual machine.
I would recommend that you use Ubuntu.
So if you are using Windows to do this course, so you can also do so, but do it at your own risk.
All my codes have been tested only on Linux machine and I have never tested them on the Windows machine.
The compiler that we will going to use is GCC compiler and you must have a GitHub account because all
my codes are shared on the GitHub.
And if you have a GitHub account then it would be easy for you to navigate through my source code or
get an access to it.
And finally, you should have a zeal to think and learn to do not only this course but any course whatsoever.
So after doing this course, you will be able to design Multithreading applications.
You would be able to choose when to thread and when not to write, and you will be able to implement
thread synchronization techniques.
You will be able to apply concepts to not only a programming language such as C or C plus plus, but
in fact, if tomorrow you happen to become Java programmer, Python programmer or C sharp programmer,
the concepts that you will learn in this course can very well be applied there.
Right?
So though I will demonstrate all my codes in the C language, but the concepts, but the concepts are
language agnostic and you can apply those concepts very well in any programming language in future.
Right?
Then after doing this course, you will be in a position to answer interview questions with confidence
and you can drive the interviews.
Needless to say, you will be writing a couple of codes in this course and therefore you will get an
enhanced coding and development skills.
This course will also help you to build resume and GitHub portfolio.
And you can join our group, which is a telegram group on Practicals and you can visit our website to
know more about us.
You cannot work with instructors or other students and get the opportunity to get referrals or any advice
regarding career or anything else by joining our telegram group.
So best of luck guys.
See you in the course.