线程

什么是线程:线程是进程内部的一条执行路径,是系统调动的基本单位,每个进程至少有一条线程,称之为主线程。

        由于线程是进程内部的一条执行路径,所以一个进程中的所有线程共享全局、堆数据,包括打开的文件描述符,只有每个线程栈区的数据是线程独享的。

 

线程的实现方式有三种模式分别为用户级、内核级、混合模式。接下来分别介绍着山中实现方式。

用户级:线程的创建、销毁、管理都是在用户空间完成的,由用户管理,不由内核管理。

优点:灵活性高,不知道线程的存在,任何平台都可以运行。线程切换快,线程切换在用户空间完成,不需要陷入内核。

缺点:编程复杂,用户必须自己管理线程,包括线程的调度;如果一个线程阻塞,整个进程都会阻塞;不能使用对称多处理器。

内核级:线程的创建、销毁、管理都是有内核来完成的。

  优点:内核线程使得用户编程简单

  缺点:每次切换都得切入内核,所以效率极低。

混合模式:一部分一用户级线程创建、一部分由内核创建,是一个多对多的关系,结合用户级和内核级的优点。

线程的使用:

线程库包含在头文件pthread.h中。

线程的创建:

  int  pthread_create(pthread_t *id,pthread_attr_t *arr,void*(*pthread_fun)(void*),void*arg)

线程从pthread_fun函数入口地址开始执行,到pthread_fun 函数结束。arg 参数为给pthread_fun 函数传递参数,attr 为线程的属性。

pthread_create函数成功返回 0,失败返回错误码。

 

线程结束:

Int pthread_exit(void *)

线程结束默认调用exit函数,这个函数会结束进程。进程结束,所有的线程也会随之结束。

等待线程结束:

Int pthread_join(pthread_t id,void **)

 

终止一个线程

int pthread_cancl(pthread_t id)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值