UNIX线程与进程

进程与线程有根本上的不同。

每个进程有其独立的数据空间,文件描述符以及进程的ID。

而线程共享一个数据空间,文件描述符以及进程ID。

一些重要概念:

1.共享数据空间

多个线程可以轻易地读取到这个共享的数据集。在读取上,一般不会出现问题,但是涉及到数据的修改时,就需要考虑一系列问题了。

2.共享的文件描述符

在fork原语被调用之后,文件描述符将被复制,从而子进程得到一套全新的文件描述符,子进程关闭某一从父进程继承的文件描述符之后,对父进程无任何影响(对于父进程该描述符仍是打开的)。而在多线程中,线程的文件描述符是共享的,一个线程关闭该文件,则该文件描述符对于进程中的所以线程都是关闭的。

3.fork,exec,exit,Signals

如果一个线程调用了exec,系统内核用一个新的程序代替了当前程序,于是所以正在运行的线程都会消失。

如果一个线程调用了fork,那么只有调用fork的线程在新的进程中运行。

如果一个线程调用了exit,那么整个进程都将结束。

线程与信号量之间则比较复杂,在此先不做讨论。

*参考自《Unix/Linux编程实践教程》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值