转:线程---创建,终止

原文地址:http://www.cnblogs.com/muzihuan/p/4694662.html

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(int execute);

eg:

 View Code

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

 eg:

 View Code

4.线程取消

int pthread_cancel(pthread_t thread);//取消线程:正在运行的线程先取消再收尸
posted @ 2016-02-22 00:13  清渡茶叶  阅读(77)  评论(0编辑  收藏  举报