Linux 线程

来源:互联网 发布:淘宝海淘靠谱吗 编辑:程序博客网 时间:2024/06/07 06:09
   线程(thread)是在 共享内存空间 中并发的多道执行路径,它们共享一个进程资源,如文件描述符和信号处理。Linux的线程是针对POSIX线程,也就是pthread,Linux对它的支持最好。
   线程是一个更接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序的基础上引入线程和进程是为了提高程序的并发度,从而提高程序的运行效率和响应时间。
   也可以将线程和轻量级进程(LWP)视为同等,但LWP更恰当的解释为一个虚拟CPU或内核的线程。它可以帮助用户态线程实现一些特殊的功能。
   Pthread是一种标准化模型,他把一个程序分成一组能够执行的任务。
一般,下列三种场合会使用Pthread线程:
  • 在返回前 阻塞的I/O任务 能够使用一个线程处理I/O, 同时处理其他任务。
  • 在有一个或多个任务受不确定性事件影响,比如网络通信的可获得性影响的场合,能够使用线程处理这些异步事件,同时执行正常的处理。
  • 如果程序的某些功能比其他功能更重要,可以使用线程以保证所有功能都出现。但那些时间密集型的功能具有更高的优先级。 
  总结: 在检查程序中潜在的并行性时,也就是说在要找出能够同时执行任务时使用Pthread
 
  Linux进程模型提供了执行多个进程的能力,已经可以进行并行或者并发编程。可是,线程能够让你对多个任务的控制度更好、使用资源更少,因为一个单一的资源,如全局变量,可以由多个线程共享。而且,在拥有多个处理器的系统上。多线程应该比用多个进程实现的应用的执行速度更快!
    线程和进程在使用上各有优缺点:
  • 线程执行开销小,但不利于资源的管理和保护;而进程正相反。
  • 线程适合在对称多处理器的计算机上运行,而进程则可以跨机器迁移;
  • 进程可以拥有资源,而线程共享进程拥有的资源;
  • 进程的切换必须保存在进程控制块中(PCB,Process Control Block),同个进程的多个线程间的切换不用那么麻烦。
        
总结:
     进程单独占有系统资源,进程的切换必须保存在进程控制块(PCB)中;线程共享进程的资源,(同个进程的)线程之间的切换不那么麻烦。线程是一个更接近于执行体的概念,它可以同进程中的其他线程共享数据,但拥有自己的栈空间拥有独立的执行序列



0 0
原创粉丝点击