A Mach thread belongs to exactly one task, and is the means of execution. The task supplies the resources.

Mach threads are implemented inside the kernel, like in many operating systems, unlike some user-level thread packages (aka "green" threads).

A thread (theoretically) runs concurrently with all the other threads of a system. If the system provides several processors, they can be used for simultaneously running either several threads of the same task, or several threads of different tasks. (But this is currently not support in GNU Mach.)

It is easy for the kernel to switch execution from one thread to another one inside the same task: essentially, it only involves exchanging a few processor registers' state.

Threads have scheduling parameters and maintain various statistics about themselves.

On GNU/Hurd, APIs for Mach threads and thereabouts are provided by the libthreads (cthreads), and libpthread (POSIX Threads) packages.

A task backing a thread is the basis for a UNIX process.