赞
踩
今天主要进行了线程的学习
exec函数族时一大组函数,这些函数主要用来利用进程空间来执行另外一份代码
主要有以下:
int execl(const char *path, const char *arg, ...
/* (char *) NULL */);
int execlp(const char *file, const char *arg, ...
/* (char *) NULL */);
int execle(const char *path, const char *arg, ...
/*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);
通过其函数名结尾字母的不同,可以做以下区分:
l:参数以列表形式传递
v:参数以指针数组形式传递
e:更新环境变量
p:在系统指定目录下查找文件
其中要注意的是execlp是在指定路径下寻找可执行代码,一般默认为,环境变量中对应的PATH路径,我们也可以通过setenv来设置我们想要的路径
1.基本概念: 线程:线程是一个轻量级的进程,位于进程空间内部,一个进程中可以创建多个线程 2.线程创建: 线程独占栈空间,文本段、数据段和堆区与进程共享 3.线程调度: 与进程调度是一样的 宏观并行,微观串行 4.线程消亡: 与进程消亡是一样的 5.进程和线程的区别: 进程是操作系统资源分配的最小单元 线程是CPU任务调度的最小单元 6.多进程和多线程的优缺点: 效率:多线程 > 多进程 多线程只需在同一进程空间内切换 多进程需要在不同的空间中切换 通信:多线程 > 有进程 线程共享全局变量,可以通过全局变量实现数据通信 进程空间是独立的,没有共享空间,通信实现比较复杂 通信实现:多进程 > 多线程 线程共享空间操作时会引发资源竞争 进程没有共享空间,不存在资源竞争的问题 安全:多进程 > 多线程 一个进程异常不会影响其余进程空间 一个线程异常结束会导致进程异常结束,进程异常结束,该进程内所有线程任务均无法向下执行 7.线程相关的函数接口: 创建: fork pthread_create 退出: exit pthread_exit 回收: wait pthread_join 1.pthread_create int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); 功能: 在该进程中创建一个新的线程 参数: thread:存放线程ID空间首地址 attr:线程属性空间首地址 start_routine:线程要执行的函数的入口 arg:给线程函数的参数 返回值: 成功返回0 失败返回错误码 编译时加 -lpthread选项 2.pthread_self pthread_t pthread_self(void); 功能: 获得调用该函数线程的ID 练习:创建三个线程任务,线程打印 线程(TID:XXXX)开始执行 3.pthread_exit void pthread_exit(void *retval); 功能: 让调用该函数的线程任务结束 参数: retval:线程结束的值 4.pthread_join int pthread_join(pthread_t thread, void **retval); 功能: 回收线程空间 参数: thread:线程的ID号 retval:存放线程结束状态空间的首地址 返回值: 成功返回0 失败返回错误码
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。