嵌入式学习日记(29)进程、线程
回收资源空间
子进程回收策略
1、wait阻塞回收:一般情况下父进程专门负责回收
2、waitpid非阻塞回收:搭配轮询方式回收
3、不回收:子进程任务一致执行
4、异步回收:子进程结束后通知父进程进行回收
exec 函数族
三种调用外部程序的方式
#include <stdio.h>
#include <unistd.h>int main()
{char *arg[] = {"ls","-l",NULL};execv("/bin/ls",arg);execlp("ls","ls","-l",NULL);execvp("ls",arg);return 0;
}
l :list,列表 p:path,路径 e:env,环境变量 v:vector,容器
线程
什么是线程
线程是轻量级的进程,也可以实现多任务并发,由进程创建
线程的创建
进程创建线程时默认分配8M栈区空间,同一进程下的多个线程和进程共用堆区、数据区、文本区,线程是任务调度的最小单位
线程的调度
宏观并行,微观串行
线程的消亡
1、线程退出 2、回收空间
进程和线程的区别
线程相关编程
创建、调度、消亡
线程的创建
创建线程
#include <stdio.h>
#include <pthread.h>void *task(void *arg)
{printf("I'm thread,tid = %ld\n",pthread_self());
}int main(int argc,const char *argv[])
{pthread_t tid;int ret = pthread_create(&tid,NULL,task,NULL);if(ret != 0){perror("thread error :");return -1;}while(1){}return 0;
}