我知道线程用于多任务处理,而且它们非常轻量级。
假设我需要一个没有任何多任务处理的进程。如果我只创建一个进程,CPU会将一个单独的线程与该进程关联,还是会执行该进程而不需要线程的存在?
假设我需要一个没有任何多任务处理的进程。如果我只创建一个进程,CPU会将一个单独的线程与该进程关联,还是会执行该进程而不需要线程的存在?
fork
、vfork
或者clone
(不带CLONE_THREAD
)时,你会得到一个具有新TID的新线程,而TGID被设置为该TID - 这是一个新进程。clone
和CLONE_THREAD
一起时,你会得到一个具有新TID的新线程,但TGID与克隆者保持相同。这是同一进程中的不同线程。一个进程就是一个线程。
当一个进程开始时,它会有一个单一的线程。
在多线程出现之前,线程这个术语是不必要的,因为一个进程不能有超过一个线程。
现在,你可以创建额外的线程,因此可以拥有具有多个线程的进程。
一个进程也是其他许多东西的集合 - 内存、堆栈等;其中之一就是线程。这些线程共享进程中的某些东西(例如内存),但具有自己的其他实例(例如堆栈)。