linux 多线程概述

小弟第一次写,仅仅是将自己学习到的东西表达出来,如有错误之处,肯请大家批评指正。

 

 

 

        linux 多线程是一种轻量级的进程。它在应用中非常广泛。一个好的应用程序,一定离不开多线程。

 

        一.什么是线程

        1.一个线程是给定的指令的序列 (你所编写的代码),一个栈(在给定的方法中定义的变量),以及一些共享数据(类一级的变量)。线程也可以从全局类中访问静态数据、栈以及可能的一些共享数据。

        2.每个线程有其自己的堆栈和程序计数器(PC)。你可以把程序计数器(PC)设想为用于跟踪线程正在执行的指令,而堆栈用于跟踪线程的上下文,上下文是当线程执行到某处时,当前的局部变量的值。虽然你可以编写出在线程之间传送数据的子程序,在正常情况下,一个线程不能访问另外一个线程的栈变量。

        3.一个线程有四种状态:

        初始态:一个线程调用了new方法之后,并在调用start方法之前的所处状态。在初始态中,可以调用start和stop方法。
        Runnable:一旦线程调用了start 方法,线程就转到Runnable 状态,注意,如果线程处于Runnable状态,它也有可能不在运行,这是因为还有优先级和调度问题。

        阻塞/ NonRunnable:线程处于阻塞/NonRunnable状态,这是由两种可能性造成的:要么是因挂起而暂停的,要么是由于某些原因而阻塞的,例如包括等待IO请求的完成。

        退出:线程转到退出状态,这有两种可能性,要么是run方法执行结束,要么是调用了stop方法。


        最后一个概念就是线程的优先级,线程可以设定优先级,高优先级的线程可以安排在低优先级线程之前完成。一个应用程序可以通过使用线程中的方法setPriority(int),来设置线程的优先级大小。

 

        4.与进程相比,线程具有以下优势: 

              a.线程的划分尺度小于进程,使得多线程程序的并发性高。

              b.进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。

        5.与进程相比,线程的缺点:

              a.共享资源需要耗费一定的锁资源,同步相对复杂。
              b.一个线程崩溃可能导致整个进程崩溃,这个当然是自己的应用程序有问题

 

        总结:多进程是独享资源的一种方式,独立性强,相互影响较小,适合独立工作,一个进程崩溃不会影响其它的进程。也正是因为这样,进程相比于线程它的通讯比较麻烦。线程是共享进程资源的,通讯简单,效率较快。所以,在你开发的应用程序中,视情况采用多线程还是多进程。

 

        二.线程使用方法之创造线程

        1.常用函数

        a.比较两个线程的ID

 
                         如果相等则返回非零的数,错误返回0
b.得到创建线程的ID号
 
                                   返回线程的ID号
        c.创建线程
  
                                    成功,返回 0
  第一个参数为pthread_t类型的数据,第二个参数一般为NULL,
  第三个参数也就是要调用的函数名,第四个参数为函数参数(以结构体的形式来传递)
      例如:打印线程ID的实例
 
       三.结束线程
       1. pthread_exit函数

与进程退出时调用exit类似,线程退出时也需要调用pthread_exit

 

函数pthread_exit在成功调用时返回0,失败时返回-1

 

函数pthread_exit终止调用的线程。参数retval的值对pthread_join函数的成功由实际意义。

然而,pthread_exit的retval必须指定,在线程退出时它才退出的数据,因此它不能够作为正在退出的线程的自动局部数据被分配。

 

2.pthread_join函数

 

 

成功返回 0,否则失败

例如:线程结束的实例:

 

 

带参数的线程那部分下一篇文章继续。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值