liunx线程——高手勿喷

1.线程的概念

线程:进程的创建、销毁与切换存在着较大的时空开销,因此人们急需一种轻型的进程技术来减少开销。在80年代,线程的概念开始出现,线程被设计成进程的一个执行路径,同一个进程中的线程共享进程的资源,因此系统对线程的调度所需的成本远远小于进程。简单点来说线程就是一个执行事情的步骤,有他做事的方式,它是一个进程内部的控制序列。

进程与线程两者关系:进程可以包括线程,而线程只是进程的一部分。

2.线程的创建

pthread_create函数

pthread_create(pthread_t *thread,const pthread_attr_t *attr,void * (*start_routine)(void*),void*arg)

参数:1. 线程id  pthread_t  ptid;

参数:2 线程属性  一般为 NULL

参数:3 进程处理函数   创建后被执行

参数:4 回调函数的参数

返回值  成功为0 失败:错误号(利用strerror()可以查看错误原因,perror不可以)

注意点:线程创建后如果主线程先退出 则他儿子也要退出

3.线程的删除

int pthread_cancel(pthread_t pthread)

参数:进程id

注意点:在杀死子线程的内部必须做过一次系统调用(read write printf)

也可以设置取消点,点到在杀在回收

4.单个线程的退出

函数:pthread_exit(void *retval)

指针必须指向全局和堆,一般直接为0;

如果利用exit()去退出线程的话,子线程和主线程都会停止

而pthread_exit和return NULL只会退出单一线程

5.线程的回收

int  pthread_join(pthread_t pthread,void **retval)

参数 1:线程id 

参数2 :读取线程退出携带的信息,不需要则为NULL

6.线程的分离属性

1.线程属性变量 pthread_attr_t attr;

2.线程属性操作函数

1.init   :int pthread_attr_init(&attr);

2.设置线程分离属性

int  pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED(分离)或者PTHREAD_CREATE_IOINABLE(含义非分离))

3.释放线程资源函数

int pthread_attr_destroy(&attr)

7.线程同步概念

对于共享资源进行操作,但是存在CPU调度问题,若不处理,会引发数据混乱问题

,于是需要协调,然后按照所需要的顺序处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值