In computer science and software engineering, concurrency is broadly categorized into two primary types: process-based concurrency and thread-based concurrency (often referred to as multitasking and multithreading). Process-based concurrency involves multiple independent programs executing simultaneously with their own separate memory spaces, managed by the operating system. Thread-based concurrency involves multiple execution pathways running within the same single process, sharing the same memory space to execute tasks cooperatively and achieve high computational efficiency.