What are the other ways you want to model concurrency? Message-passing without shared memory does not exploit the abilities of modern machines. Message-passing <i>with</i> shared memory counts as multithreaded for the purposes of this discussion (language-level tracking of who else can access memory), regardless of whether it&#x27;s a thread or a process or a task or a coroutine or a whatever.