线程——线程初识之基本概念

线程初识:

  1. 线程是轻量级的进程:

    A. 线程不具备私有空间。

    B. 因为资源共享,父线程结束,则子线程无可苟活。

    a. 因此要使儿女线程正常存活,我们必须确保父亲的安全健康。

    C. 每个线程有标识自己身份的id为tid。

    D. 同一线程家族继承主线程(主进程)的资源。

    E. 若某个线程族受到进程级的打击,则该族线程全部都会被影响。

    F. 不同线程家族之间不产生联系。

  2. 线程只有父子和兄弟。

    只有两代人,即父线程创建的线程是他的子线程,子线程创建的线程是自己的兄弟。因为子线程没有自己的资源,只是继承了父线程的资源。

  3. 线程较之于进程优缺:

    最大优点是快。

    调度

    线程是程序调度的基本单位。

    进程是资源分配的基本单位

  4. 线程为第三方库提供,意味着所有线程在用户空间运行。本来进程时代,所有人都需要父进程管理,而现在,我们会找一个主线程作为小组长,帮助父进程管理。

  5. 查看线程

$ ps aux -H
$ pstree -ap

pstree时{} 包裹的为线程

  1. 所有线程都共用的是父线程的pid,所以调用getpid()时得到的都是主线程即父线程的pid。每一个线程都具有进程pid的身份,每个线程都有,一个pid。

  2. 线程id即tid,只在一个进程空间有效,用以标记每个线程的身份。所以,要对线程做操作的话,用tid进程操作。

  3. 主线程pid存在但是被常被我们使用,我们只使用标识线程身份的tid。

  4. 不同进程内的线程要进行交流的话,其实是以其父亲的进程身份进行通信交流。而不是两个线程直接通信。

  5. 各进程之间相同tid并没有什么必要联系。

  6. syscall(SYS_gettid);
    syscall 层次特别低,最接近于内核,移植性特别差。上述调用可以得到自己的tid

你可能感兴趣的:(线程,线程,概念)