= Concurrency == Concurrency versus parallelism https://go.dev/blog/waza-talk “Concurrency is about ordering of computations and parallelism is about the mode of operation” “Concurrency is a way of organizing code and parallelism is a resource” == Process-level threads fibers == user-mode threads == green threads == lightweight threads tasks == ~ goroutines OS threads → preemptive async → cooperative → between yielding points, you will execute uninterrupted ⇒ long time between yielding points? no progress! → simpler implementation Questions to evaluate the concurrency concept: • is it cooperative? is it preemptive? • can arguments be passed to the function/routine? • what information is shared between parent-child? • If the child dies (exception), does the parent die? • Does the runtime wait for all children to terminate before terminating itself? • does it support cancellation (always cooperatively)? • how does one wait for all concurrent units to terminate (“joining”)? https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/