全部博文(39)
分类: LINUX
2017-10-22 09:16:03
有人说,不必非要使用线程,多个进程也能做到这点,的确如此,Unix/Linux原来的设计是没有线程的,类Unix系统包括linux从设计上更倾向于使用进程,反倒是windows因为创建进程的开销巨大,而更加热爱线程。
那么线程是不是一种设计上的冗余呢?其实不是这样的。
进程之间,彼此的地址空间是独立的,但线程会共享内存地址空间。同一个进程的多个线程共享一份全局内存区域,包括初始化数据段、为初始化数据段和动态分配的堆内存段。
这种共享给线程带来了很多的优势:
(1)创建线程的花费时间要少于创建进程花费的时间。
(2)终止线程花费的时间要少于终止进程花费的时间。
(3)线程之间上下文切换的开销,要少于进程之间的上下文切换。
(4)线程之间的数据共享比进程之间的数据共享要简单。