Linux 线程函数
1.线程是进程中的一个活动单元,多个线程共享同一个进程的地址空间,参与操作系统的统一调度
2.使用线程的好处:效率高
3.多个线程共享的资源
[1]地址空间
[2]文件描述符
[3]堆空间
4.多个线程私有的资源
[1]栈空间
[2]私有的寄存器值
5.线程的创建
int pthread_create
(
pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine) (void *),
void *arg
);
参数:
@thread 获得线程ID
@attr NULL:默认属性
@start_routine 线程执行的函数入口地址
@arg 给线程函数传递的参数
返回值:
成功返回0,失败返回错误碼
练习:
1.创建两个线程,一个线程传递data = 10
2.让线程1,对data 每隔1s加1 ,让线程2,对data值没隔1s减1,
让主线程每隔1s后输出data值
6.线程的结束和等待
void pthread_exit(void *retval);
功能:结束一个线程的执行
参数:
@retval 线程结束的时候,需要返回值的地址
int pthread_join(pthread_t thread, void **retval);
功能:等待一个指定线程退出,并且释放僵尸态子线程未释放资源(栈空间)
参数:
@thread 线程ID
@retval 获得线程结束时返回的地址
任务:多线程拷贝 [子1:拷贝前一半] [子2:拷贝后一半] [主线程等待子1,子2结束]
typedef struct
{
int fd_src;
int fd_dest;
int post;
int len;
}arg_t;
//int do_copy(int fd_src,int fd_dest,int post,int len)