Threads
Thread vs Process, Why processes are heavy
Process Memory Layout
User Space, Kernel Space, Green Threads
Thread Memory Layout
Thread Creation:
CPP(Threadclass, CPP Functor)
Rust (Normal, Scoped)
Go (goroutines),
Python,
POSIX,
Java
OS Thread(Runnable Interface)
Green Thread(Thread.startVirtualThread(),
Thread.ofVirtual(), Virtual thread factory, Virtual thread
executor)
Windows
Joinable Detachable Threads
Synchronization
What is Synchronization?
Problems in sync:
Dining Philospher, n Producer n Consumer
Synchronization Methods:
Java
Methods List: Pipes,
Shared Memory, condvar, Semaphores, mutex, Arc<mutex>, Rwlocks,
channels
Rust:
Arc, Arc<mutex>
C++:
condition_variable
mutex: C++, POSIX, Rust
IPC
What is IPC?
IPC Methods:
Types: Pipe, Channels(Rust, go),
Named pipes, fifo, Message Queues, Shared Memory, Memory mapped
files
Rust: Channels
Golang:
Channels
Types(Buffered/Unbuffered, Directional/Bidirectional), select(wait on
multiple channels)
Atomic
Thread Pool
Java
C++
Go
Rust