多线程理论与编程

和进程相比,线程更节俭。进程必须分配独立的地址空间,建立众多的数据表维护其代码段,堆栈段和数据段。

统一进程下的线程共享数据空间。

遵循POSIX线程接口,称Pthread.需要使用头文件Pthread.h和库文件Pthread.a.

创建线程

Int pthread_create(pthread_t *tidp,const pthread_attr_t * attr, void *(*start_rtn)(void),void *arg)

Tidp 线程ID

Attr 线程属性

Start_rtn 线程要执行的函数

Arg Start_rtn的参数

 

Pthread的库不是linux的系统库,编译的时候要加上 -lpthread

 

Gcc filename -lpthread

 

Void *thread1()

{

 

}

Void *thread2()

{

 

}

Main()

{从函数获取ID

Ret=pthread_create(&id1,NULL,(void*)thread1.NULL);

If (Ret)

{

Printf();

}

}

 

线程终止

Pthread_exit();

线程等待

Int pthread_join(pthread_t tid,void **rval_ptr);

Tid等待退出的线程ID

rval_ptr 线程退出的返回值的指针

 

线程标识

Pthread_t pthread_sef(void);

 

Pthread_cleanup_push的调用点到Pthread_cleanup_pop的之间程序段中的终止动作(包括调用Pthread_exit()和异常终止)都将执行Pthread_cleanup_push()所指定的清理函数。

Pthread_cleanup_pushvoid (*rtn)(void *),void *arg);

Rtn清除函数

Arg清除函数的参数

 

Pthread_cleanup_popint execute);

Execute 0:执行 0:不执行函数

这里测试0好像也执行了

你可能感兴趣的:(多线程理论与编程)