Linux线程的一些特点

Linux的线程是通过进程来模拟的,也就是说Linux里的线程本质上就是进程。

Linux的线程机制是通过内核和库混合实现的,所以线程的实现在Linux的核心态和用户态都有执行,内核实现线程/进程的调度,libpthread库实现线程之间的同步。这也就是为什么多线程程序需要连接一个libpthread库的原因。

Linux程序如果用pthread_create启动一个新的线程,实际上启动了两个轻量进程,第一个是管理线程,第二个才是真正做事情的线程。但是后续新创建的线程就不需要再创建管理线程了。

Linux中每个线程都有自己唯一的进程号,用getpid()获得。但是从Linux Kernel 2.6之后,这个缺陷被消除了。

Linux这种用进程模拟线程的方式,和signal机制不一致,signal是发给进程的,但是在linux里,往一个进车发送signal,实际上只有一个线程处理这个signal。

Linux的进程机制实现的很好,进程间调度的overhead很小。


你可能感兴趣的:(Linux线程的一些特点)