【应用】05.Linux多线程编程
【嵌入式八股】一、语言篇https://www.nowcoder.com/creation/manager/columnDetail/mwQPeM
【嵌入式八股】二、计算机基础篇https://www.nowcoder.com/creation/manager/columnDetail/Mg5Lym
【嵌入式八股】三、硬件篇https://www.nowcoder.com/creation/manager/columnDetail/MRVDlM
【嵌入式八股】四、嵌入式Linux篇(本专栏)https://www.nowcoder.com/creation/manager/columnDetail/MQ2bb0
4、Linux多线程编程
90.多线程编程相关函数
- pthread_self() 函数:用于获取当前线程的 ID。
- pthread_create() 函数:用于创建一个新线程,它需要传入一个指向线程标识符的指针、线程属性、线程函数和传递给线程函数的参数,成功创建后,线程将开始执行指定的函数。
- pthread_exit() 函数:用于终止当前线程,并返回一个指定的值,此函数可以使线程返回给创建它的进程一个值。
- pthread_join() 函数:用于等待一个指定的线程结束,它会阻塞调用它的线程,直到指定的线程结束为止。
- pthread_cancel() 函数:用于请求取消指定的线程,实际上并不保证能够取消成功。
- pthread_detach() 函数:用于将指定线程设置为分离状态,使得该线程结束时可以自动回收相关资源,而不需要显式调用 pthread_join() 函数。
- pthread_attr_ 函数:用于设置线程的属性,包括线程栈的大小、优先级、调度策略等等。
91.怎么回收线程?有哪几种方法?
-
等待线程结束: int pthread_join(pthread_t tid, void** retval);
主线程调用,等待子线程退出并回收其资源,类似于进程中wait/waitpid回收僵尸进程,调用pthread_join的线程会被阻塞。
- tid:创建线程时通过指针得到tid值。
- retval:指向返回值的指针。
-
结束线程: void pthread_exit(void *retval);
子线程执行,用来结束当前线程并通过retval传递返回值,该返回值可通过pthread_join获得。
-
分离线程: int pthread_detach(pthread_t tid);
主线程、子线程均可调用。主线程中pthread_detach(tid),子线程中pthread_detach(pthread_self()),调用后和主线程分离,子线程结束时自己立即回收资源。
92.线程同步相关函数
- pthread_mutex_ 函数:用于对互斥锁(mutex)进行操作,包括初始化、加锁、解锁、销毁等。互斥锁是一种保护共享资源的机制,它可以防止多个线程同时访问共享资源,从而避免出现数据竞争(da
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
查阅整理上千份嵌入式面经,将相关资料汇集于此,主要包括: 0.简历面试 1.语言篇 2.计算机基础 3.硬件篇 4.嵌入式Linux【本专栏】 (建议PC端查看)