嵌入式linux从入门到精通之第十三节:系统编程之互斥与同步(代码片段)

产品人卫朋 产品人卫朋     2023-02-22     280

关键词:

互斥锁(mutex)

mutex是一种简单的加锁的方法来控制对共享资源的访问,mutex只有两种状态,即上锁(lock)和解锁(unlock)。

在访问该资源前,首先应申请mutex,如果mutex处于unlock状态,则会申请到mutex并立即lock;如果mutex处于lock状态,则默认阻塞申请者。
unlock操作应该由lock者进行。

mutex用pthread_mutex_t数据类型表示,在使用互斥锁前,必须先对它进行初始化。
静态分配的互斥锁:

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;

动态分配互斥锁:

pthread_mutex_t mutex;
pthread_mutex_init(&mutex, NULL);在所有使用过此互斥锁的线程都不再需要使用时候,应调用pthread_mutex_destroy销毁互斥锁。

初始化互斥锁

#include <pthread.h>
int pthread_mutex_init(
        pthread_mutex_t *mutex,
    const pthread_mutexattr_t *attr);

功能:
初始化一个互斥锁。
参数:
mutex:互斥锁地址。
attr:互斥锁的属性,NULL为默认的属性。
返回值:
成功返回0,失败返回非0。

上锁

#include

嵌入式linux从入门到精通之第九节:系统编程

系统编程概述在讲解系统编程之前,先了解几个概念:操作系统的作用:操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来。什么是Linux系统编程?在有操作系统的环境下编程,并使用操作系统提供的系统调... 查看详情

嵌入式linux从入门到精通之第九节:系统编程

系统编程概述在讲解系统编程之前,先了解几个概念:操作系统的作用:操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来。什么是Linux系统编程?在有操作系统的环境下编程,并使用操作系统提供的系统调... 查看详情

嵌入式linux从入门到精通之第三节:字符串处理函数(代码片段)

字符串整体操作函数  strlen//长度测量    strcpy/strncpy//拷贝    strcat/strncat//连接    strcmp/strncmp//比较   头文件:#include<string. 查看详情

嵌入式linux从入门到精通之第十四节:linuxio控制技术

目录设备控制概述操作设备文件函数监听文件描述符示例设备控制概述对于硬件设备,Linux采用了与裸机完全不同的机制进行管理。Linux下的所有硬件(IO、键盘、鼠标等)均是以文件的形式进行统一管理的,每个设备在/dev/目录下... 查看详情

嵌入式linux从入门到精通之第十五节:嵌入式系统简介

嵌入式系统的层级结构如下图所示:开发环境这里以三星s5pv210为开发环境:系统资源s5pv210是三星公司推出的32位RISC微处理器,其CPU采用的是ARMCortex-A8内核,基于ARMv7架构丰富的片内资源,为手持设备和其它移动领域应用,提供了... 查看详情

嵌入式linux从入门到精通之第十二节:线程

线程类比于人得大脑,进程来实现具体操作每个进程都拥有自己的数据段、代码段和堆栈段,这就造成进程在进行创建、切换、撤销操作时,需要较大的系统开销。为了减少系统开销,从进程中演化出了线程。线程存在于进... 查看详情

嵌入式linux从入门到精通之第十六节:u-boot分析

简介u-boot最初是由PPCBoot发展而来的,可以引导多种操作系统、支持多种架构的CPU,它对PowerPC系列处理器的支持最为完善,而操作系统则对Linux系统的支持最好目前已成为Armboot和PPCboot的替代品。特点:主要支持操作系统:Linux、N... 查看详情

嵌入式linux从入门到精通之第十一节:进程间通信

进程间通信(IPC:InterProcessesCommunication)进程是一个独立的资源分配单元,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源(例如打开的文件描述符)... 查看详情

嵌入式linux从入门到精通之第七节:gtk+概述

什么是GTK+ 查看详情

嵌入式linux从入门到精通之第八节:gtk+详解

GTK+常用布局什么是布局 查看详情

嵌入式linux从入门到精通之第一节:软件安装

Linux安装ubuntu环境安装1.安装VmwarePlayer虚拟机:双击VMware-player.exe,一路next即可;2.打开虚拟机,点击CreataNewVirtualMachine;3.选择稍后设置;4.选择Linux,ubuntu;5.选择虚拟机名称和路径;6.硬盘选择50G;7.改变虚拟机设置,进行内存相... 查看详情

嵌入式linux从入门到精通之第二节:语言基础

C语言基础1、关键字C的关键字共有32个   •数据类型关键字(12个)      char,short,int,long,float,double,      unsigned,signed,struct,union,enum,void  查看详情

嵌入式linux从入门到精通之第四节:深入指针分析

存储器要深入学习指针就需要先了解一下什么是存储器。存储器是指存放数据的器件。1、内存      内部存储器.常见的内存有:ram、DDRII      存储的数据掉电丢失。暂存数据  &n... 查看详情

嵌入式linux从入门到精通之第六节:shell脚本(代码片段)

shell的两层含义shell既是一种应用程序,又是一种程序设计语言作为应用程序:   交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能作为程序设计语言:   它定义... 查看详情

嵌入式linux从入门到精通之第六节:shell脚本(代码片段)

shell的两层含义shell既是一种应用程序,又是一种程序设计语言作为应用程序:   交互式地解释、执行用户输入的命令,将用户的操作翻译成机器可以识别的语言,完成相应功能作为程序设计语言:   它定义... 查看详情

嵌入式linux从入门到精通之第五节:链表(代码片段)

链表基础   使用链表原因:   使用数组远远不能达到我们的要求   因为数组必须实现确定大小,不能实现动态申请、释放   使用malloc动态内存分配也无法实现   malloc申请的... 查看详情

嵌入式linux从入门到精通之第五节:链表(代码片段)

链表基础   使用链表原因:   使用数组远远不能达到我们的要求   因为数组必须实现确定大小,不能实现动态申请、释放   使用malloc动态内存分配也无法实现   malloc申请的... 查看详情

第十三节:pandas之groupby()分组

1、Series()对象分组  1.1、单级索引  1.2、多级索引2、DataFrame()对象分组  查看详情