Linux多线程基础之线程基础用法
什么是线程?
多人砌墙的故事
加快任务完成可以通过加人的方法来实现。
同样,程序中可以通过加进程来实现,但是,多进程存在资源浪费的问题。
而线程没有资源浪费的问题。
总结:
线程就是“轻量级”的进程
线程与创建它的进程共享代码段、数据段
线程有自己的栈
创建线程:
int pthread_create(pthread_t * thread, const pthread_attr_t * attr, void * ( * start_routine)(void * ), void * arg);
返回值:成功:0
失败:错误编码
参数1:新创建的线程ID
参数2:待创建线程的属性
参数3:线程的入口函数
参数4:线程的入口函数的参数,可以为NULL
注意:编译时必须链接pthread库
等待线程结束:
解释:多进程中,父进程结束时,子进程可以不结束;
但是多线程中,进程A(主线程)退出时,子线程也会结束。
int pthread_join(pthread_t thread, void ** retval);
功能:用于等待线程结束
返回值:
成功:0
失败:错误编码
参数1:要等待结束的线程ID
参数2:保存目标线程退出时的状态,一般为NULL
退出线程:
注意:不可以使用exit()哦!!! 这样会使整个进程退出。
void pthread_exit(void * retval);
功能:结束线程
参数1:保存返回值
结束:代码实例请参考下一节讲解(Linux多线程之线程互斥(互斥锁))