apue 学习笔记——线程

前序:

本人菜鸟学生一枚,从5月9号开始学习Linux,到现在整整一个月了,这一个月真的收获很大,特别充实。

由于毕业课题项目提前做完了,论文也写完了,坐等毕业的节奏,但是距毕业还有差不多一年的时间,感觉这段时间不应该就这么荒废掉,应该做点有意义的事情。

之前都是搞裸机项目,从来没有接触操作系统,一直对它挺好奇的,现在终于有了充裕的时间可以干自己想干的事情了,所以决定学习一下Linux。自从入手,真是欲罢不能,这一个月每天的时间基本上都在看书和敲代码。

最开始是从鸟哥的Linux私房菜开始入手的,5月9号买下,5月25号基本看完,后面有些章节没看。5月25号买下apue,开始深入研究这本圣经,在看的时候真是给人一种意犹未尽和欲罢不能的感觉,不愧为一本经典之作。介绍的确实很深入,但大部分还是可以看懂的,很多地方真是值得细细品味。边看书、边敲代码、边时不时的搜一下相关内容的博客补充理解,不知不觉,全书已经看完了一半,现在刚刚看完第12章——线程控制。

自己的能量超乎了我的想象,入手时都说这本书很难,真是有些担心自己看不进去,没想到自己的进度会这么快,更没想到自己居然能激发出这么大兴趣,兴趣真的很重要。

半个月,看完了一半,匆匆走过,是时候回头做做总结了,是时候做点笔记了,就先从线程这一章开始吧。

自己的字太丑了,就用博客记录读书笔记吧!由于是菜鸟,自己的博客仅作自己的学习笔记之用。



线程标识

每个线程都有一个线程标识:线程ID,只在它所属的进程环境中有效。数据类型为:pthread_t
通过调用pthread_self()函数可以获取自己的ID。
pthread_t  pthread_self(void);

线程创建

int pthread_create( pthread_t *thread,   const pthread_attr_t *attr,  void *(*start_rtn)(void *),   void*arg );
若线程创建成功,返回0。若线程创建失败,则返回出错编号。
4个参数:
1,thread:线程ID指针
2,attr:设置线程属性
3,start_rtn:线程运行函数起始地址,函数指针
4,arg:线程函数的唯一入口参数,如果是多个参数,可以将把参数存放在一个结构中,然后将结构地址传递给arg。


线程终止

线程终止方式:
(1)线程从启动例程中简单的返回,返回值是线程的退出码;
(2)线程可以被同一进程的其他线程取消;pthread_cancel(pthread_t tid)
(3)线程调用pthread_exit函数。终止该线程,并返回一个指向某一对象的指针,可由其他函数如pthread_join来检索获取。

void  pthread_exit(void * retval)  //终止状态存于retval指向的单元


等待线程终止并获取终止状态

对于以可结合状态启动的线程(线程属性为PTHREAD_CREATE_JOINABLE)
int pthread_join(pthread_t tid, void ** retval) // 以阻塞方式等待指定线程tid结束,retval 用于获取线程的终止状态。
例:
pthread_t  tid;
void * tret;
void* tid_func(void * arg);

pthread_create(&tid,NULL,tid_func,NULL);//创建线程tid
pthread_join(tid,&tret);

注意:要确保调用完成之后,线程返回值指向的内存仍然是有效的。若线程返回值是线程内部定义的局部变量的指针,线程结束后,变量即被释放,此时返回值将变成野指针。

#include "apue.h"
#include <pthread.h>
void * thread_func(void * arg);

char s[]="Hello word!";

int main(void)
{
    int res;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值