您的位置:首页 > 其它

UNIX线程与进程

2015-12-21 10:34 288 查看
进程与线程有根本上的不同。

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

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

一些重要概念:

1.共享数据空间

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

2.共享的文件描述符

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

3.fork,exec,exit,Signals

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

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

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

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

*参考自《Unix/Linux编程实践教程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: