Thread Creation: CPP(Threadclass, CPP Functor), Rust (Normal, Scoped), Go (goroutines), Python, POSIX, Java(OS Thread, Green Threads), Windows
Joinable Detachable Threads
Synchronization
Synchronization Methods: C++, Golang, Java, Python
Problems in sync: Dining Philospher, n Producer n Consumer
Rust: Arc, Arc<mutex>
C++: condition_variable
mutex: C++, POSIX, Rust
Go: Channels, Atomics
Communication
Interprocess (IPC): What is IPC?
Types: Pipe, Named pipes, fifo, Message Queues, Shared Memory, Memory mapped files
Interthread:
Rust Channels
Go Channels ((Buffered/Unbuffered, Directional/Bidirectional), select(wait on multiple channels)), Go Atomic
Code(multithreaded):
Building H2O
Fizz Buzz Multithreaded
Circular Reference / Deadlock. Resolved using unique_lock <defer_lock>
LRU Cache Multithreaded 1 Writer, Multiple Readers(shared_lock<shared_mutex>)
Print FooBar Alternately
Print Zero Even Odd
Print in order Execute 3 functions in order
Rate Limiter: Only 10 req/min allowed. 1 Writer, Multiple Readers(shared_lock<shared_mutex>)
Stream Logger: Logger that receives a stream of log messages along with their timestamps (in seconds). and print after 10 seconds
Thread Pool: Java, C++, Go, Rust