门源县公司网站建设/seo培训

门源县公司网站建设,seo培训,东莞网站建设哪家好,网络运维工程师面试常见问题一、前情回顾 void perror(const char *s);功能:参数: 二、资源竞争 1.多线程访问临界资源时存在资源竞争(存在资源竞争、造成数据错乱) 临界资源:多个线程可以同时操作的资源空间(全局变量、共享内存&a…

一、前情回顾

void perror(const char *s);
功能:
参数:

二、资源竞争

1.多线程访问临界资源时存在资源竞争(存在资源竞争、造成数据错乱)

临界资源:多个线程可以同时操作的资源空间(全局变量、共享内存)

解决:

        互斥:多个线程访问临界资源时,进行排他性访问。(同一时刻只允许一个线程对该临界资源进行访问)

        互斥锁:解决多线程访问临界资源时,存在资源竞争。

        1.创建           pthread_mutex_t mutex

        2.初始化        pthread_mutex_init

        3.加锁            int pthread_mutex_lock

        4.解锁            int pthread_mutex_unlock

        5.销毁锁        int pthread_mutex_destroy

int pthread_mutex_init(pthread_mutex_t *restrict muxt,const pthread_mutexattr_t *restrict attr);
功能:初始化一个互斥锁

参数:
restrict mutex:锁对象地址

restrict attr:锁的属性(NULL)

返回值:

成功:0

失败:非零

上锁          int pthread_mutex_lock( pthreaad_mutex_t *mutex)
 解锁         int pthread_mutex_unlock( pthreaad_mutex_t *mutex)
 销毁锁      int pthread_mutex_destroy( pthreaad_mutex_t *mutex)
参数:所创建的锁地址

返回值:

成功:0

失败:非零


2.同步与异步   

        异步:多任务各自执行各自的任务,互相之间没有直接干扰。

        同步:多个任务中的某些步骤按照先后顺序执行。

2.1线程间同步:

多个线程在某个任务执行过程中具有先后顺序

2.1.1信号量(sem):

实现线程间同步(使用同步方式访问临界资源,可以达到互斥的效果)

2.1.2信号量使用:

1.定义信号量对像          sem_t sem

2.初始化                         sem_init()

3.申请信号量:P操作        

4.释放信号量:V操作        

5.销毁                                

int sem_init(sem_t *sem,int pshared,unsigned int value)
功能:初始化一个信号量

参数:

sem:信号量的地址

pshared:同一个进程间的线程间 0//不同进程间非0

value:初始化的资源数

返回值:

成功 0

失败 -1

申请

  int sem_wait( sem_t *sem)
当申请的信号量资源数>0,sem_wait表示申请到了该信号量,信号量资源数-1)
当申请的信号量资源数=0,sem_wait阻塞等待信号量的释放
 释放  int sem_post( sem_t *sem)
该信号量的资源数自动+1
 销毁  int sem_destroy( sem_t *sem)

三、进程通信

同一主机进程间通信:

3.1无名管道

用于同一主机下,具有亲缘关系的进程间通信。

1.创建一个管道并打开 int pipe(int pipefd[2]);(pipefd[0],管道的读端,pipefd[1]管道的写端) 

2.读管道    read();

3.写管道    write();

4.关闭管道 close();

5.删除管道 remove();

3.2有名管道

用于同一主机下,具有任意关系的进程间通信。

3.3信号

3.4共享队列

3.5消息队列

3.6信号灯

不同主机进程间通信:

3.7网络套接字

四、补充

*memset(void *s,int c,size_t n);(将内存清成指定字节)

     字符串首地址,修改成的字符,清几个

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/71820.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LD_PRELOAD 绕过 disable_function 学习

借助这位师傅的文章来学习通过LD_PRELOAD来绕过disable_function的原理 【PHP绕过】LD_PRELOAD bypass disable_functions_phpid绕过-CSDN博客 感谢这位师傅的贡献 介绍 静态链接: (1)举个情景来帮助理解: 假设你要搬家&#x…

【无人集群系列---无人机集群编队算法】

【无人集群系列---无人机集群编队算法】 一、核心目标二、主流编队控制方法1. 领航-跟随法(Leader-Follower)2. 虚拟结构法(Virtual Structure)3. 行为法(Behavior-Based)4. 人工势场法(Artific…

【Erdas实验教程】009:非监督分类及分类后评价

文章目录 一、分类过程二、分类评价ERDAS 的 ISODATA 算法是基于最小光谱距离来进行的非监督分类,聚类过程始于任意聚类平均值或一个已有分类模板的平均值;聚类每重复一次,聚类的平均值就更新一次,新聚类的均值再用于下次聚类循环。这个过程不断重复,直到最大的循环次数已…

一周学会Flask3 Python Web开发-Jinja2模板访问对象

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 如果渲染模板传的是对象,如果如何来访问呢? 我们看下下面示例: 定义一个Student类 cla…

全面理解-深拷贝与浅拷贝

在 C 中,深拷贝(Deep Copy) 和 浅拷贝(Shallow Copy) 是两种完全不同的对象拷贝策略,主要区别在于对指针和动态分配资源的处理方式。正确理解二者的区别是避免内存泄漏、悬空指针和程序崩溃的关键。 一、核…

蓝桥杯第十六届嵌入式模拟编程题解析

由硬件框图可以知道我们要配置LED 和按键 LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码&#xf…

在 JavaScript 中,[](空数组)不是假值,它是“真值”(truthy)

文章目录 语法解释!this.form.productPhotos 的含义在代码中的作用具体判断 实际上下文总结当前代码的局限 在你的父组件代码中,出现了 !this.form.productPhotos 这样的表达式,具体是在 handleSubmit 方法中: private handleSubmit() {if (…

【Springboot3】Springboot3 搭建RocketMQ 最简单案例

说来也奇怪,RocketMQ 不能很好的兼容Springboot3,刚开始上手Springboot3集成RocketMQ会发现总是不能实例化RocketMQTemplate,老是启动时报错。本项目采用Springboot3,JDK21 ,Maven 3.9,提供一个非常简单的示…

w~视觉~合集13

我自己的原文哦~ https://blog.51cto.com/whaosoft/13384038 #xxx w视觉合集13~17没了.... #ViTAR 作者提出了一种新颖的架构:任意分辨率的视觉 Transformer (ViTAR)。ViTAR中的自适应标记合并功能使模型能够自适应地处理可变分辨率图像…

初识.git文件泄露

.git 文件泄露 当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了 这是一种常见的安全漏洞,指的是网站的 .git 目录…

百度百舸 DeepSeek 一体机发布,支持昆仑芯 P800 单机 8 卡满血版开箱即用

在私有云环境中成功部署 DeepSeek 满血版并实现性能调优,并不是一件容易的事情。选择合适的 GPU 配置、安装相应的环境、成功部署上线业务、加速推理任务加速、支撑多用户并发 …… 完成业务测试,成功融入生产业务中。 为了帮助企业快速实现 DeepSeek 服…

ASP.NET Core 简单文件上传

使用异步 JavaScript 和 XML(AJAX)进行简单的文件上传;用 C# 编写的服务器端代码。 使用AJAX和ASP.NET Core MVC上传文件再简单不过了。这不依赖于jQuery。此代码允许上传多个文件,并与 .NET Core 3.1、.NET 6和.NET 8兼容。 如果…

【Excel】【VBA】根据内容调整打印区域

Excel VBA:自动调整打印区域的实用代码解析 在Excel中,我们经常需要调整打印区域。今天介绍一段VBA代码,它可以根据C列的内容自动调整打印区域。 Dim ws As Worksheet Dim lastRow As Long Dim r As Long 设置当前工作表 Set ws ActiveSh…

【关于seisimic unix中使用suedit指令无法保存问题】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、如何修改头文件二、出现的问题尝试解决使用ls显示文件属性使用chmod修改文件属性 总结 前言 提示:这里可以添加本文要记录的大概内容&#xff…

微前端qiankun打包部署

官网:API 说明 - qiankun 前提:后台项目,在主应用设置菜单,微应用渲染组件,没有使用路由跳转loadMicroApp 1.token需要使用setGlobalState,传参或者方法用的setGlobalState 2.打包没有使用Nginx 3.有需…

POST请求提交数据的三种方式及通过Postman实现

1、什么是POST请求? POST请求是HTPP协议中一种常用的请求方法,它的使用场景是向客户端向服务器提交数据,比如登录、注册、添加等场景。另一种常用的请求方法是GET,它的使用场景是向服务器获取数据。 2、POST请求提交数据的常见编…

【一起学Rust | 框架篇 | Tauri2.0框架】在Tauri应用中设置Http头(Headers)

文章目录 前言一、配置准备1. 检查版本2. 使用条件3. 支持的请求头(并不是全部支持) 二、使用步骤1. 如何配置header2. 框架集成1. 对于Vite系列、Nuxt、Next.js这种前端框架Vite系列框架Angular系列框架Nuxt系列框架Next.js系列框架 2. 对于Yew和Leptos…

Uniapp 开发中遇到的坑与注意事项:全面指南

文章目录 1. 引言Uniapp 简介开发中的常见问题本文的目标与结构 2. 环境配置与项目初始化环境配置问题解决方案 项目初始化注意事项解决方案 常见错误与解决方案 3. 页面与组件开发页面生命周期注意事项示例代码 组件通信与复用注意事项示例代码 样式与布局问题注意事项示例代码…

算法系列之搜素算法-二分查找

在算法中,查找算法是处理数据集合的基础操作之一。二分查找(Binary Search)是一种高效的查找算法,适用于有序数组或列表。本文将介绍二分查找的基本原理、Java实现。 二分查找介绍 二分查找是一种在有序数组中查找特定元素的算法…

Unity百游修炼(2)——Brick_Breaker详细制作全流程

一、项目简介 Brick Breaker 是一款经典的打砖块游戏,本次案例将使用 Unity 引擎来实现该游戏的核心功能。 游戏画面如下: Brick_ breaker 二、项目结构概览和前期准备 (1)在 Unity 项目视图中,我们可以看到几个重要…