线程(Thread)是进程运行、CPU 调度的最小单位。
每个进程可视作一个线程组,至少包含一个线程。其中第一个创建的线程称为主线程。
每个线程(称为父线程)可以创建任意个其它线程(称为子线程)。
父线程及其所有子线程属于同一个进程。
当父线程终止时,系统会自动杀死其所有子线程。
当一个进程中的所有线程都终止时,内核才认为该进程已终止,回收其占用的系统资源。
每个线程也可以创建其它进程,不过此时看作是该线程所属的进程创建了其它进程,考虑的是进程间关系,而不是线程间关系。
内核给一个进程分配了系统资源之后,大部分会被该进程下的各个线程共享,包括:
每个线程也有独自分配的系统资源,包括:
线程有两种属性:
joinable :默认。当线程终止时,不会立即释放它占用的资源,而是等到其它线程调用 pthread_join() 来获取它的退出值。
detached :当线程终止时,会立即释放它占用的资源。
每个进程可以创建多个 LWP ,它们之间共享系统资源,因此可以模拟线程。