linux 线程的创建和终止,linux高编线程-------线程的创建,终止

Q: what is thread  ?

A:一个正在运行的函数----是运行函数咯----多线程共享内存空间咯

posix线程是一套标准,而不是实现

线程标识: pthread_t 类型不确定:结构体?or指针?or整型数,想啥是啥,可以自己定义咯

lhh@lhh:~$ ps axm

lhh@lhh:~$ ps ax -L // LWP

进程就是容器  内部装载线程

函数:

int pthread_equal(pthread_t t1, pthread_t t2);//比较两个线程是否相同;相同返回非0 否则返回0

pthread_t pthread_self(void); //返回当前线程标识;

1.创建一个线程:

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

参数1:回填线程表示

参数2:线程的属性:常用NULL

参数3:函数指针 ----兄弟线程

参数4:兄弟线程的参数

返回值:成功返回0;失败直接返回error number

2.线程的终止:

3种方式:1)线程从启动例程返回,返回值就是线程的退出码

2)线程可以被同一进程中的其他线程取消

3)线程调用pthread_exit()函数

void pthread_exit(void *retval);//线程终止

int pthread_join(pthread_t thread, void **retval);//线程收尸 成功返回0,错误返回error number **retval只收尸不关心状态

3.栈的清理:

//钩子函数 void pthread_cleanup_push(void (*routine)(void *),void *arg);void pthread_cleanup_pop(intexecute);

eg:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#include #include

static void *func(void *p)

{

puts("Thead is working!");

pthread_exit(NULL);

}intmain()

{

pthread_t tid;interr;

puts("Begin !");

err= pthread_create(&tid,NULL,func,NULL);if(err)

{

fprintf(stderr,"%s",strerror(err));

exit(1);

}

pthread_join(tid,NULL);

puts("End !");

exit(0);

}

View Code

OK!休息休息,下节继续!

eg:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

#include #include#include#include

void *cleanup_func(void *p)

{

puts(p);

}void *func(void *p)

{

puts("Thead is working !");

pthread_cleanup_push(cleanup_func ,"cleanup:1");

pthread_cleanup_push(cleanup_func ,"cleanup:2");

pthread_cleanup_push(cleanup_func ,"cleanup:3");

pthread_cleanup_pop(1);

pthread_cleanup_pop(0);

pthread_cleanup_pop(1);

pthread_exit(NULL);

}intmain()

{

pthread_t tid ;interr ;

puts("Begin !");

err= pthread_create(&tid,NULL,func,NULL);if(err)

{

fprintf(stderr,"%s",strerror(err));

exit(1);

}

pthread_join(tid,NULL);

exit(0);

}

View Code

4.线程取消

int pthread_cancel(pthread_t thread);//取消线程:正在运行的线程先取消再收尸

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值