Liunx系统编程篇—多线程编程
文章平均质量分 77
Liunx系统编程篇—多线程编程的学习笔记
阿波罗啦啦啦啦
粮厂嵌入式工程师 Android底层音视频开发 曲折中上升,实践中领悟
展开
-
Liunx系统编程篇—多线程编程(三)(关于条件变量)常用API的使用
条件变量条件变量是的同步机制。条件变量给多个线程提供了一个会合的场所。条件变量与互斥量一起使用时,允许线程以无竞争的方式等待特定的条件发生。条件本身是由互斥量保护的。线程在改变条件状态前必须首先锁住互斥量,其他线程在获得互斥量之前不会察觉到这种改变,因为必须锁定互斥量以后才能计算条件。条件变量使用之前必须首先初始化pthread_cond_t数据类型代表的条件变量可以用两种方式进行初始化,静态初始化:pthread_cond_t cond = PTHREAD_COND_INITIALIZER可原创 2021-01-31 22:24:24 · 168 阅读 · 0 评论 -
Liunx系统编程篇—多线程编程(三)(关于互斥锁)互斥锁什么时候发生死锁?
互斥锁什么时候发生死锁?在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁,尽管死锁很少发生,但一旦发生就会造成应用的停止响应。注:死锁一般发生在程序存在2个锁以上的情况。实例:#include <stdio.h>#include <pthread.h>//int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *rest原创 2021-01-31 16:14:11 · 169 阅读 · 0 评论 -
Liunx系统编程篇—多线程编程(二)线程开发常用API(二)(关于互斥锁)(共4种全)
互斥锁互斥量(mutex)是一把锁,在访问共享资源前对互斥量进行加锁,在访问完成后释放互斥量上的锁。对互斥量进行加锁后,任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁==(直白来说就是只有一个坑,排队上)==。如果释放互斥锁时有多个线程阻塞,所有在该互斥锁上的阻塞线程都会变成可运行状态,第一个(需要竞争)变为可运行状态的线程可以对互斥量加锁,其他线程将会看到互斥锁依然被锁住,只能回去等待它重新变为可用。在这种方式下,每次只有一个线程可以向前运行。访问规则得制定好,不然会出现数据不原创 2021-01-30 22:27:29 · 149 阅读 · 0 评论 -
Liunx系统编程篇—多线程编程(二)线程开发常用API(一)(关于线程操作)(共3种全)
线程开发常用API——关于线程操作包含的头文件#include <pthread.h>线程操作:线程操作包括3 种线程的创建,退出,等待。1、线程的创建函数原型int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void *(*start_rtn)(void *), void *restrict arg);函数参数tidp:当pthread_create成功返回时原创 2021-01-30 20:07:43 · 213 阅读 · 0 评论 -
Liunx系统编程篇—多线程编程(一)进程与线程的区别、线程的优点、线程开发常用API
进程与线程的区别进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述。进程才是程序(那些指令和数据)的真正运行实例。典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。线程:线程是操作系统能够进行运算调度的最小单位。转载 2021-01-30 16:25:41 · 206 阅读 · 0 评论