POSIX线程-为什么要用线程
来源:互联网 发布:淘宝职称论文署名单位 编辑:程序博客网 时间:2024/05/23 11:40
最简单的回答是:线程比进程更快,开销更小。考虑一下下面的场景:
1. 当需要在在进程间共享数据时,我们必须使用IPC来进行通信,因为两个进程间没有“天生”的共享内存区(进程要求虚拟空间独立,如果想共享数据,必须把这几个进程的某个地址映射到相同的物理内存上)。IPC的使用将会导致开销上升。
2. 需要创建新进程时,我们使用fork()函数。虽然该函数不会拷贝所有的数据,但是最基本的数据,比如页表,文件描述符表等还是需要创建的。这也会导致开销上升。
而线程完全不会有上面的问题。两个线程之间的数据共享是很自然的事,因为同一进程的线程都在一个虚拟地址空间,数据的共享就像变量赋值一样(但要注意同步问题)。线程的创建也比进程的创建快,因为它不需要复制和创建很多数据。
当然,线程并不是用来替代进程的,它自身也有缺点,它的出现只是给了程序员另一种选择。比如我们在线程中使用的函数必须是thread-safe的(即多个线程访问同一函数不会影响输出的结果);一个线程的bug很可能会引起该进程的崩溃(所有的线程都在同一个虚拟地址空间内,一个线程能很容易的访问到另一个线程的空间),线程间可能会有同步问题。所以使用线程的程序必须很小心的设计和实现。
0 0
- POSIX线程-为什么要用线程
- Posix 线程
- Posix线程
- POSIX线程
- POSIX 线程
- POSIX线程
- POSIX线程
- POSIX线程
- posix线程
- POSIX线程
- POSIX线程
- POSIX线程
- POSIX线程-什么是线程
- 为什么要用线程池?
- POSIX线程:线程私有数据
- 通用线程:POSIX 线程详解
- 通用线程:POSIX 线程详解
- 通用线程:POSIX 线程详解
- openGL学习笔记 简单概念
- 树 树的概念 树的存储结构
- POSIX线程-什么是线程
- char-cnn+torch+ubuntu14.04(RNN)
- 欢迎使用CSDN-markdown编辑器
- POSIX线程-为什么要用线程
- POSIX线程-基本操作
- Linux学习笔记(九)——Linux文件压缩与打包
- python写的一个邮件收发工具
- 黑马程序员——函数
- POSIX线程-互斥量
- ubuntu下使用NDK 生成so库文件时MK文件的编写
- iOS Collection滚动显示图像
- [华为机试练习题]53.整数相除(AC 但还有bug)