Linux学习之系统编程篇:对线程的基本认识

(1)fork()后创建的子进程是父进程的拷贝,那么pthread_create,创建线程,创建的线程跟原进程有什么关系呢?
fork 会通过拷贝产生新的虚拟地址空间(PCB 会变化),而 pthread_create 后,虚拟地址空间没有变化,原进程退化成线程(主控线程)。 创建的子线程和主控线程共享地址空间,且各自有独立的 PCB(由一个 PCB 变成多个,但相同)。
(2)子线程的 PCB 是从主控线程拷贝来的。
(3)子线程和主控线程共享地址空间,用户区中除了栈区独有,其余都共享。因此可以通过全局变量进行通信,但不可以通过局部变量进行通信。
(4)栈不共享,各线程平分栈空间,而非另外创建栈空间。
注意:
在 Linux 下,对于内核,线程就是进程 。
进程是最小的系统资源分配单位,线程是最小的执行单位。
线程号和线程 ID 的区别:一个线程 ID 可能对应多个进程号,用户看线程 ID,内核看线程号。
查看指定线程的 LWP 号: 首先找到程序的进程 pid (ps aux | grep 关键字);其次 ps -Lf pid。
(5)多进程和多线程的区别
多进程始终共享的资源:代码段.txt,文件描述符,内存映射区。
多线程始终共享的资源:堆、全局比变量。
使用多线程好处:可以更简单的实现通信;而且可以节省资源,更合理的利用 CPU(如果有两个 CPU,对于一个进程,只能占用一个,但创建一个线程,两个线程就都可以跑,在内核看来,占用同样的地址空间,但有 2 个进程在运作)。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值