郑州网站建设有限公司教学工作总结
2026/3/25 22:33:53 网站建设 项目流程
郑州网站建设有限公司,教学工作总结,免费长尾词挖掘工具,wordpress显示摘要一、线程核心概念 1. 定义与归属 线程是轻量级进程#xff08;Lightweight Process, LWP#xff09;#xff0c;必须隶属于某个进程#xff0c;不能独立存在。进程是线程的 容器#xff0c;线程的所有操作都依赖于进程的资源#xff08;如代码段、数据段、…一、线程核心概念1. 定义与归属线程是轻量级进程Lightweight Process, LWP必须隶属于某个进程不能独立存在。进程是线程的 容器线程的所有操作都依赖于进程的资源如代码段、数据段、文件描述符等。2. 核心作用与进程一致线程的核心作用是实现并发执行尤其适合处理相对耗时的任务如网络 IO、文件读写需要并行处理的逻辑如多任务拆分二、线程与进程的核心区别对比维度进程线程资源分配单位系统最小资源分配单位系统最小执行单位资源独立性资源完全独立地址空间、文件描述符等共享进程资源仅私有栈区稳定性稳定性高一个进程崩溃不影响其他稳定性低一个线程崩溃导致整个进程崩溃创建开销大需分配 3GB 独立地址空间小仅需开辟 8MB 栈区并发度低高资源共享切换成本低内部关系进程间是独立关系同一进程内线程是平级关系关键补充同一进程中默认存在 1 个主线程程序启动时创建执行 main 函数其他线程为子线程。线程的私有资源仅为栈区用于存储局部变量、函数调用栈其余资源代码段、数据段、堆区、文件描述符均与进程内其他线程共享。三、POSIX 线程编程核心步骤创建多线程通过 API 创建子线程指定线程执行逻辑。线程空间操作子线程执行指定任务共享进程资源私有栈区操作。线程资源回收线程退出后默认栈区不释放需主动回收或设置分离属性自动回收。四、线程相关工具命令1. 查看线程信息bash运行# 显示所有线程的PID、PPID、LWP线程ID、状态、命令 ps -eLo pid,ppid,lwp,stat,comm # 显示所有线程的详细信息包括CPU占用、内存等 ps -eLflwp线程 ID与pthread_self()获取的 ID 一致stat线程状态如 R 运行、S 睡眠、Z 僵尸2. 工作路径相关函数辅助线程文件操作1获取当前工作路径c运行#include unistd.h char *getcwd(char *buf, size_t size);功能获取当前进程线程共享的工作路径。参数buf存储路径的字符数组需提前分配空间。sizebuf的最大长度避免缓冲区溢出。返回值成功返回指向buf的指针路径字符串。失败返回NULL错误原因通过errno查看。2切换工作路径c运行#include unistd.h int chdir(const char *path);功能修改当前进程线程共享的工作路径。参数path目标路径绝对路径或相对路径。返回值成功返回0。失败返回-1错误原因通过errno查看。五、POSIX 线程核心 API 函数所有线程函数均在pthread.h头文件中声明编译时需链接线程库添加-lpthread参数。1. 创建线程pthread_createc运行int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);功能创建一个新的子线程。参数thread输出参数存储新创建线程的 ID需提前定义pthread_t变量。attr线程属性一般设为NULL使用默认属性。start_routine线程执行函数函数指针即线程的入口逻辑回调函数格式要求c运行void *func(void *arg) { /* 线程逻辑 */ }arg传递给start_routine的参数无参数时设为NULL。返回值成功返回0。失败返回非 0 错误码需通过strerror()转换为错误信息。2. 获取当前线程 IDpthread_selfc运行pthread_t pthread_self(void);功能获取调用该函数的线程的 ID。参数无。返回值当前线程的 ID类型为pthread_t打印时用%lu格式符。3. 线程退出pthread_exitc运行void pthread_exit(void *retval);功能子线程主动退出不会影响其他线程和进程。参数retval线程退出状态临死遗言可通过pthread_join回收。返回值无线程退出后不再执行后续代码。4. 取消线程pthread_cancelc运行int pthread_cancel(pthread_t thread);功能请求终止指定 ID 的线程仅为 请求线程需响应才能退出。参数thread目标线程的 ID。返回值成功返回0仅表示请求发送成功不代表线程已退出。失败返回非 0 错误码。5. 阻塞回收线程资源pthread_joinc运行int pthread_join(pthread_t thread, void **retval);功能阻塞等待指定线程退出并回收其资源栈区避免内存泄漏。参数thread要回收的子线程 ID。retval输出参数存储子线程的退出状态即pthread_exit的retval。返回值成功返回0。失败返回非 0 错误码。6. 设置线程分离属性pthread_detachc运行int pthread_detach(pthread_t thread);功能设置线程为 分离属性线程退出后系统自动回收其资源无需pthread_join。适用场景不需要获取线程退出状态仅需线程执行完自动释放资源。参数thread目标线程的 ID通常设为pthread_self()即线程自分离。返回值成功返回0。失败返回非 0 错误码。六、关键注意事项编译链接使用 POSIX 线程函数时编译命令需添加-lpthread链接线程库例如bash运行gcc thread_demo.c -o thread_demo -lpthread资源共享与竞争线程共享进程资源如全局变量、文件描述符多线程操作共享资源时需加锁如pthread_mutex_t避免数据竞争。线程退出与回收未设置分离属性的线程退出后必须通过pthread_join回收否则会成为 僵尸线程占用系统资源。主线程退出时若未处理子线程会导致所有子线程被强制终止可通过pthread_join让主线程等待子线程。线程安全局部变量存储在栈区线程私有全局变量、堆区数据线程共享需保证线程安全加锁、原子操作等。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询