20250827的学习笔记

发布于:2025-08-30 ⋅ 阅读:(17) ⋅ 点赞:(0)

一、pthread 线程

(1)优点:

        比多进程节省资源,可以共享变量。

(2)概念:

        线程是轻量级进程,一般是一个进程中的多个任务。

注:进程是系统中最小的资源分配单位,线程是系统中最小的执行单位。

(3)特征:

        1、共享资源

        2、效率高 30%

        3、三方库:pthread cloneposix

注:使用时要记得编写代码头文件:pthread.h,编译代码:gcc 1.c -lpthread

(4)缺点:

        1、线程和进程相比,稳定性,稍微差些

        2、线程的调试gdb,相对麻烦些。

(5)线程和进程的共同点

        并发

(6)线程和进程的不同点

        1、创建的开销,proc 3G,thread 8M。

        2.、proc数据不共享 thread 共享(除栈区)。

        3、稳定性,proc稳定,thread(不稳定)。

        4、proc(大任务),thread(大任务中的小任务)。

        5、线程是属于某个进程的。

二、创建多线程

1.int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);

功能:

        该函数可以创建指定的一个线程。

参数:

        thread 线程id,需要实现定义并由该函数返回。

        attr 线程属性,,一般是NULL,表示默认属性。

        start_routine 指向指针函数的函数指针。

返回值:

        成功        0

        失败        错误码

2. pthread_t pthread_self(void); unsigned long int;

注:使用输出%lu

功能:

        获取当前线程的线程id

参数:无

返回值:

        成功        返回当前线程的线程id

        失败        -1;

三、线程的退出

1.void pthread_exit(void *retval); 

功能:

        子线程自行退出

参数:

        retval 线程退出时候的返回状态,临死遗言。

返回值:无

2.int pthread_cancel(pthread_t thread);

功能:

        请求结束一个线程

参数:

        thread 请求结束一个线程tid

返回值:

        成功        0

        失败        -1;

四、线程的回收

1.int pthread_join(pthread_t thread, void **retval);

功能:

        通过该函数可以将指定的线程资源回收,该函数具有阻塞等待功能,如果指定的线程没有结束,则回收线程会阻塞。

参数:

        thread        要回收的子线程tid

        retval        要回收的子线程返回值/状态。

返回值:

        成功        0

        失败        -1

注:设置分离属性目的是,线程消亡,自动回收空间。

2.int pthread_attr_init(pthread_attr_t *attr);

功能:

        初始化一个attr的变量

参数:

        attr,需要变量来接受初始值

返回:

        成功        0

        错误        非0

3.int pthread_attr_destroy(pthread_attr_t *attr);

功能:

        销毁attr变量。

参数:

        attr,属性变量

返回:

        成功        0

        错误        非0

4.void pthread_cleanup_push(void (*routine)(void *), void *arg);

功能:

        注册一个线程清理函数

参数:

        routine        线程清理函数的入口

        arg        清理函数的参数。

返回值:无

5.void pthread_cleanup_pop(int execute);

功能:

        调用清理函数

参数:

        execute        非0执行清理函数,0不执行清理

返回值:无


网站公告

今日签到

点亮在社区的每一天
去签到