为什么需要线程分离?
默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_join操作,否则无法释 放资源,从而造成系统泄漏。 如果不关心线程的返回值,join是一种负担,这个时候,我们可以告诉系统,当线程退出时,自动释放线程资源。
int pthread_detach(pthread_t thread);
来看以下demo,体会detach的使用。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<unistd.h>
#include<pthread.h>
void *thread_run(void *arg){
pthread_detach(pthread_self());
printf("%s\n",(char*)arg);
return NULL;
int main()
pthread_t tid;
if(pthread_create(&tid,NULL,thread_run,"thread_run ...") != 0){
printf("create thread error\n");
return 1;
int ret = 0;
sleep(1);
if(pthread_join(tid,NULL) == 0){
printf("pthread wait success\n");
ret = 0;
}else{
printf("pthread wait failed\n");
ret = 1;
return ret;
线程相关函数1. 线程相关函数1.1 pthread_exit函数1.2 pthread_join函数1.3 pthread_cancel函数1.4 pthread_detach
1. 线程相关函数
线程终止
从线程函数return。这种方法对主线程不适用,从main函数return相当于调用exit。
线程可以调用pthread_ exit终止自己。
一个线程可以调用pthread_ cancel终止同一进程中的另一个线程。
1.1 pthread_exit函数
exit()是终止进程,并不是终止
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void
什么是线程?为什么要有多线程?
一家公司需要生产某种产品,然后为生产这种产品提供了各种原材料和几层楼的资源。而这件产品是有很多个零件组成的,各个零件需要的材料可能是不同的,即,有些零件之间的制造是不相互影响的。现在要生产一种产品,由A、B两种零件组成。公司分配了1、2、3这三层楼(2楼是用于生产的该产品的各种器械)用于生产该产品。假设加工零件A是将材料都准备好了放到2楼的机器里边,...
什么是线程先来举一个我们生活中的实例,我们都使用过一个强大的软件—迅雷。那你必然知道迅雷有一个边下边播的功能,我们在下载的时候还能同时进行观看。这就是一个多线程实例。
线程是进程内部的执行分支。
打开迅雷软件—–向系统内核索要资源,启动“迅雷”进程,。
开始下载一个电影—–从索要的资源中调度分配一部分资源,启动下载线程。
开始播放电影—–再索要的资源中调度分配一部分资源次从,启动播放线程。
#include &amp;amp;lt;pthread.h&amp;amp;gt;
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
(2...
线程的概念:线程是运行在进程内的一个基本执行流,和进程共享地址空间及资源(类似于父子进程共享地址空间),但每个也有自己的私有资源。进程强调独占性 每个进程都有它独立的地址空间,包括Text Segment、Data Segment等线程强调共享性 线程的共享资源: 1.进程代码段 2.进程的公有数据(利用这些共享的数据,线程很容易的...