Threads
Thread vs Process, Why processes are heavy
Process Memory Layout
User Space, Kernel Space, Green Threads
Thread Memory Layout
Threads
Thread Creation:
CPP(Threadclass, CPP Functor), Rust (Normal, Scoped), Go (goroutines), Python, POSIX, Java, Windows
Joinable Detachable Threads
Synchronization
What is Synchronization?
Problems in sync:
Dining Philospher, n Producer n Consumer
Synchronization Methods:
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