linux 线程
###1. 多进程 / 多线程 很多需要并发处理的任务,如数据库的服务器端、网络服务器等, 可以使用多进程来实现, 也可以使用多线程来实现 使用多进程, 存在如下的优缺点: fork一个子进程的消耗是很大的,即使使用现代的写时复制(copy-on-write)技术。 各个进程拥有自己独立的地址空间,进程间的协作需要复杂的IPC技术,如pipe,共享内存, unix socket等 多进程可以避免内存泄漏 多进程可以实现特权分离 使用多线程, 则存在如下的优缺点 建立新的线程的开销较小 线程共享进程的代码可全局数据, 线程间通信方便 线程共享进程的代码可全局数据, 可能存在竞争, 需要同步 ###2. 用户空间线程 这里的用户线程指的是完全建立在用户空间的线程库,用户线程的建立,同步,销毁,调度完全在用户空间完成,不需要内核的帮助, 内核并没有直接对用户线程进程调度,内核的调度对象和传统进程一样,还是进程本身,内核并不知道用户线程的存在,用户线程之间的调度由在用户空间实现的线程库实现 因为用户空间线程完全在用户态实现线程,因此也就和具体的内核没有什么关系,可移植性和扩展性方面比较好 用户空间线程的缺点是一个用户线程如果阻塞在系统调用中,则整个进程都将会阻塞 ###3. 内核空间线程 内核空间线程是指由内核来负责建立,同步, 销毁, 调度的线程,因为内核空间实现的线程由内核负责调度, 因此它能够利用多处理器的优势, 并且, 某一个线程阻塞不会导致其所属的进程阻塞 ###4. 轻量级进程LWP LWP本质仍然是进程,与普通进程相比:...