Linux 多线程编程(一)

来源:互联网 发布:vue.js ide工具 编辑:程序博客网 时间:2024/06/02 03:11

Linux 多线程编程

 

线程(Thread)已被许多操作系统所支持,包括Windows/NT ,Linux

以前的多线程其实是多进程,而现在意味着一个进程中有多个线程

 

使用多线程的原因(多线程的优点):

1.“节省”,启动一个新的进程需要分配给它独立的地址空间,建立众多的数据表来维护他的代码段,堆栈段和数据段,这是一种“昂贵的多任务操作方式”。运行在一个进程中的多个线程,使用相同的地址空间,线程间彼此切换所需时间也远远小于进程切换的时间线程开销极大的缩小

 

2.线程间方便的通信机制不同的进程具有独立的数据空间,进程间通信费时且不方便。而同一进程下的线程共享数据空间,所以一个线程的数据可以直接为其他线程所用,快捷而方便。

 

3.使CPU系统更加有效。操作系统会保证当线程数不大于CPU数目时,不同的线程运行于不同的CPU上。

 

4.改善程序结构。长而复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分。

 

Linux系统下的多线程遵循POSIX线程接口,编写程序,使用pthread.h头文件

 

创建线程

#include <pthread.h>

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

tidp: 线程id

attr: 线程属性(通常为空)

start_rtn:线程要执行的函数

arg:start_rtn的

 

终止线程

线程正常退出方式:

线程从启动例程中返回

线程可以被另一个线程终止

线程自己调用跑pthread_exit函数

 

退出线程

void pthread_exit(void *rval_ptr)   //rval_ptr 线程退出返回的指针

 

线程等待

int pthread_join(pthread_t tid,void**rval_ptr)  //阻塞调用线程,直到指定的线程终止。

Tid :等待退出的线程id   Rval_ptr:线程退出的返回值的指针

0 0
原创粉丝点击