当前位置: 首页 > news >正文

FFmpeg-chapter2-C++中的线程

1 常规的线程

一般常规的线程如下所示

// CMakeProject1.cpp: 定义应用程序的入口点。
//#include "CMakeProject1.h"
#include <thread>
using namespace std;void threadFunction(int index)
{for (int i = 0; i < 1000; i++){std::cout << "Thread: " << i << "--" << index << std::endl;}
}int main()
{// 创建线程std::thread t1(threadFunction, 10);std::thread t2(threadFunction, 20);// 线程的两种管理方式t1.join();					// 线程同步,主线程会等待线程 t 完成后继续运行//t.detach();				// 线程分离,线程 t 会独立运行,主线程不会等待它完成t2.join();system("pause");return 0;
}

这里使用的是VS207+CMake

除过加锁,这段代码在运行的时候容易出现资源共享的情况,改进一下,参看Java中的

2 新的尝试

新建文件夹和文件如图所示

修改最外面的cmakelist.txt

# CMakeList.txt: 顶层 CMake 项目文件,在此处执行全局配置
# 并包含子项目。
#
cmake_minimum_required (VERSION 3.8)project ("CMakeProject1")# 包含子项目。
add_subdirectory ("CMakeProject1")
add_subdirectory ("MMThread")

MMThread工程下

MMThread.h

#pragma once// 定义一个类
class MMthread
{
public:virtual void run() = 0;		// 纯虚函数,线程会调用这个函数int start();				// 启动函数
};

MMThread.cpp

#include "MMThread.h"
#include <thread>int MMthread::start()
{std::thread t(&MMthread::run, this);			// 创建线程,调用自己的纯虚函数,子类继承父类会重新纯虚函数t.detach();										// 线程分类return 0;
}

里面的CMakeList.txt

# CMakeList.txt: CMakeProject1 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)# 将源代码添加到此项目的可执行文件。
# 将.cpp/.c/.cc文件生成.a静态库
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
# add_library(库文件名称 STATIC 文件)
add_library(MMThread MMThread.cpp)# TODO: 如有需要,请添加测试并安装目标。

接着修改CmakeProject1工程(图片叫MMPlayer),这个项目要用到前面项目的库,因此,要在当前目录的上一级开始查找;同时还要将用到的库链接进来

CMakeList.txt

# CMakeList.txt: CMakeProject1 的 CMake 项目,在此处包括源代码并定义
# 项目特定的逻辑。
#
cmake_minimum_required (VERSION 3.8)# 从上一级开始查找
include_directories(../)# 将源代码添加到此项目的可执行文件。
add_executable (CMakeProject1 "CMakeProject1.cpp" "CMakeProject1.h")# TODO: 如有需要,请添加测试并安装目标。# 对add_library或add_executable生成的文件进行链接操作
# 注意,库文件名称通常为libxxx.so,在这里只要写xxx即可
# target_link_libraries(库文件名称/可执行文件名称 链接的库文件名称)
target_link_libraries(CMakeProject1 MMThread)

CmakeProject1.cpp(上图中的MMPlayer.cpp)

// CMakeProject1.cpp: 定义应用程序的入口点。
//#include "CMakeProject1.h"
#include <MMThread/MMThread.h>
#include <chrono>
#include <thread>
using namespace std;class MyMMThread : public MMthread
{
public:// 构造函数MyMMThread(int _a) : a(_a) {}// 实现父类的纯虚函数void run() override{std::cout << "MyMMthread: " << a << std::endl;}private:int a;
};int main()
{MyMMThread myThread1(10);			// 创建线程// 会调用父类的start函数,父类的start函数创建线程,调用纯虚函数,子类实现了纯虚函数,因此会打印myThread1.start();MyMMThread myThread2(20);			// 创建线程myThread2.start();// 休眠2sstd::this_thread::sleep_for(chrono::seconds(2));system("pause");return 0;
}

测试

相关文章:

FFmpeg-chapter2-C++中的线程

1 常规的线程 一般常规的线程如下所示 // CMakeProject1.cpp: 定义应用程序的入口点。 //#include "CMakeProject1.h" #include <thread> using namespace std;void threadFunction(int index) {for (int i 0; i < 1000; i){std::cout << "Th…...

【前端】简单原生实例合集html,css,js

长期补充&#xff0c;建议关注收藏点赞。 目录 a标签设置不一样的花样&#xff08;图片但不用img)侧边固定box分栏input各种类型iframe表单拖拽 a标签设置不一样的花样&#xff08;图片但不用img) a标签里面不用嵌套img&#xff0c;直接设置为其bg-img即可 <!DOCTYPE html…...

Linux下的shell指令(一)

作业 1> 在终端提示输入一个成绩&#xff0c;通过shell判断该成绩的等级 [90,100] : A [80, 90) : B [70, 80) : C [60, 70) : D [0, 60) : 不及格 #!/bin/bash read -p "请输入学生成绩:" score if [ "$score" -ge 90 ] && [ "$scor…...

AJAX介绍

XMLHttpRequest get请求使用 const xhr new XMLHttpRequest(); xhr.open("GET", "/data/test.json", true); xhr.onreadystatechange function () {if (xhr.readyState 4) {if (xhr.status 200) {alert(xhr.responseText);} else {console.log("…...

Serilog: 强大的 .NET 日志库

Serilog 是一个功能强大的日志记录库&#xff0c;专为 .NET 平台设计。它提供了丰富的 API 和可插拔的输出器及格式化器&#xff0c;使得开发者能够轻松定制和扩展日志记录功能。在本文中&#xff0c;我们将探索 Serilog 的基础知识、API 使用、配置和一些常见的示例。 1. 日志…...

串口通讯基础

第1章 串口的发送和接收过程 1.1 串口接收过程 当上位机给串口发送(0x55)数据时&#xff0c;MCU的RX引脚接受到&#xff08;0x55&#xff09;数据&#xff0c;数据(0x55)首先进入移位寄存器。数据全部进入移位寄存器后&#xff0c;一次将&#xff08;0x55&#xff09;全部搬运…...

SSL证书和HTTPS:全面解析它们的功能与重要性

每当我们在互联网上输入个人信息、进行在线交易时&#xff0c;背后是否有一个安全的保障&#xff1f;这时&#xff0c;SSL证书和HTTPS便扮演了至关重要的角色。本文将全面分析SSL证书和HTTPS的含义、功能、重要性以及它们在网络安全中的作用。 一、SSL证书的定义与基本概念 S…...

全国青少年航天创新大赛各项目对比分析

全国青少年航天创新大赛各项目对比分析 一、比赛场地对比 项目名称场地尺寸场地特点组别差异筑梦天宫虚拟三维场景动态布局&#xff0c;小学组3停泊处&#xff0c;初高中组6停泊处&#xff1b;涉及传送带、机械臂、传感器等虚拟设备。初中/高中组任务复杂度更高&#xff0c;运…...

低空监视-无人机专用ADS-B应答机

产品简介 ping200XR是经过TSO适航认证的无人机专用ADS-B应答机&#xff0c;用于中大型无人机的低空监视。将经过认证的航空级航电设备引入无人机系统。该应答机支持航管二次雷达A&#xff0c;C/S模式和ADS-B OUT。重量仅52克满足无人机所面临的尺寸、重量、功耗的挑战&#xf…...

【linux】文件与目录命令 - sort

文章目录 1. 基本用法2. 常用参数3. 用法举例4. 注意事项 sort 命令用于对文本文件中的行进行排序&#xff0c;支持按字母顺序、数值大小、特定字段等方式进行排序。默认按字母顺序升序排序。 1. 基本用法 语法&#xff1a; sort [选项] 文件 sort [选项] -o 输出文件 文件功能…...

【工具推荐】在线提取PDF、文档、图片、论文中的公式

网址1&#xff1a;https://simpletex.cn/ai/latex_ocr 网址2: https://www.latexlive.com/home 推荐理由&#xff1a;无需下载&#xff0c;在线使用&#xff0c;直接 截图 CTRLV 效果更佳。...

大模型在垂直行业的落地实践:从通用到定制化的技术跃迁

大模型在垂直行业的落地实践&#xff1a;从通用到定制化的技术跃迁 一、通用大模型的局限性&#xff1a;从 “全能” 到 “专精” 的转型挑战 通用大模型&#xff0c;如 GPT 系列&#xff0c;凭借其强大的自然语言处理能力&#xff0c;在文本生成、语义理解、机器翻译等基础任…...

FPGA开发,使用Deepseek V3还是R1(1):应用场景

以下都是Deepseek生成的答案 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;1&#xff09;&#xff1a;应用场景 FPGA开发&#xff0c;使用Deepseek V3还是R1&#xff08;2&#xff09;&#xff1a;V3和R1的区别 FPGA开发&#xff0c;使用Deepseek V3还是R1&#x…...

Docker概念与架构

文章目录 概念docker与虚拟机的差异docker的作用docker容器虚拟化 与 传统虚拟机比较 Docker 架构 概念 Docker 是一个开源的应用容器引擎。诞生于 2013 年初&#xff0c;基于 Go 语言实现。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xf…...

算法之数据结构

目录 数据结构 数据结构与算法面试题 数据结构 《倚天村 • 图解数据结构》 | 小傅哥 bugstack 虫洞栈 ♥数据结构基础知识体系详解♥ | Java 全栈知识体系 线性数据结构 | JavaGuide 数据结构与算法面试题 数据结构与算法面试题 | 小林coding...

Mysql学习笔记(六)Django连接MySQL

一、Django中的MySQL驱动程序 Python中常见的MySQL驱动程序&#xff1a; MySQL-python&#xff1a;就是MySQLdb&#xff0c;是对C语言操作MySQL的封装&#xff0c;支持Python2&#xff0c;不支持Python3mysqlclient:MySQL-python的另一个分支&#xff0c;支持Python3pymysql&am…...

手机号码归属地的实现

手机号码归属地查询一般可以通过以下几种方式实现&#xff1a; 1. 使用公开的号码归属地数据库 可以使用国内的手机号码归属地数据库&#xff0c;如&#xff1a; 百度号码归属地开放API阿里云号码归属地API腾讯号码归属地API 你可以在本地存储一个 CSV 或 SQLite 数据库&…...

本地部署 DeepSeek:从 Ollama 配置到 Spring Boot 集成

前言 随着人工智能技术的迅猛发展&#xff0c;越来越多的开发者希望在本地环境中部署和调用 AI 模型&#xff0c;以满足特定的业务需求。本文将详细介绍如何在本地环境中使用 Ollama 配置 DeepSeek 模型&#xff0c;并在 IntelliJ IDEA 中创建一个 Spring Boot 项目来调用该模型…...

2025年渗透测试面试题总结- 阿某云安全实习(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 阿里云安全实习 一、代码审计经验与思路 二、越权漏洞原理与审计要点 三、SSRF漏洞解析与防御 四、教…...

WHAT - 前端异步事件流处理场景梳理

目录 一、典型场景二、解决方案与技术选型1. 基础异步控制2. 状态管理方案3. 复杂任务调度4. 任务取消机制5. 微任务队列优化 三、最佳实践建议四、工具链推荐 前端异步任务流处理是现代Web开发中常见的需求&#xff0c;尤其在复杂业务逻辑、高交互性应用中不可或缺。以下是常见…...

PHP 包含(Include)机制详解

PHP 包含(Include)机制详解 在PHP编程中,include和require是两个非常基础的函数,用于在脚本中包含其他文件。它们在模块化编程中发挥着至关重要的作用,使得代码更易于维护和扩展。本文将详细介绍PHP的包含机制,包括其工作原理、使用方法以及最佳实践。 一、PHP 包含机制…...

Metal学习笔记十:光照基础

光和阴影是使场景流行的重要要求。通过一些着色器艺术&#xff0c;您可以突出重要的对象、描述天气和一天中的时间并设置场景的气氛。即使您的场景由卡通对象组成&#xff0c;如果您没有正确地照亮它们&#xff0c;场景也会变得平淡无奇。 最简单的光照方法之一是 Phong 反射模…...

MongoDB 高级索引

MongoDB 高级索引 摘要 在数据库管理中,索引是提高查询效率的关键因素。MongoDB,作为一款流行的NoSQL数据库,其索引功能尤为强大。本文将深入探讨MongoDB的高级索引特性,包括复合索引、部分索引、文本索引、地理空间索引等,旨在帮助数据库管理员和开发者更好地利用Mongo…...

从DNS到TCP:DNS解析流程和浏览器输入域名访问流程

1 DNS 解析流程 1.1 什么是DNS域名解析 在生活中我们会经常遇到域名&#xff0c;比如说CSDN的域名www.csdn.net&#xff0c;百度的域名www.baidu.com,我们也会碰到IP&#xff0c;现在目前有的是IPV4&#xff0c;IPV6。那这两个有什么区别呢&#xff1f;IP地址是互联网上计算机…...

【JQuery—前端快速入门】JQuery 基础语法

JQuery JQuery是一个快速、简洁且功能丰富的JavaScript框架; 1. 引入依赖 使用JQuery需要先引入对应的库&#xff1b; 在使用 JQuery CDN 时&#xff0c;只需要在 HTML 文档中加入如下代码 <script src"https://code.jquery.com/jquery-3.7.1.min.js"></s…...

即梦AI发布新数字人模型OmniHuman-1

简介 随着人工智能技术的发展&#xff0c;特别是深度学习和自然语言处理的进步&#xff0c;AI在内容创作领域的应用越来越广泛。字节跳动作为一家领先的科技公司&#xff0c;一直在探索如何利用AI技术来提升用户体验和创造力。OmniHuman-1模型正是在这种背景下诞生的&#xff…...

ARM CM3核 压栈流程

STM32F103 使用 ARM Cortex-M3 内核&#xff0c;与 STM32F013&#xff08;Cortex-M0&#xff09;相比&#xff0c;其压栈行为有所不同&#xff0c;主要体现在异常自动压栈和**手动压栈&#xff08;函数调用&#xff09;**两方面。 1. 进入异常/中断时的自动压栈 当 STM32F103 …...

WHAT - RxJS 异步事件流处理

目录 RxJS 关键概念简单示例常用操作符1. 创建 Observables2. 转换操作符&#xff08;map&#xff09;3. 过滤操作符&#xff08;filter&#xff09;4. 合并多个流&#xff08;mergeMap&#xff09; 适用于 React & TypeScriptReact 组件中使用 RxJS RxJS 是一个用于处理异…...

vue组合式API中prop

*一、了解(事件与$emit) 一个组件需要显示声明它所接受的props,这样才知道外部传入的那些是props,那些是透传attribute。 在<script setup>单文件组件中,props可以使用defineProps()宏来声明,defineProps 是一个仅 <script setup> 中可用的编译宏命令,并不需…...

【HarmonyOS Next】自定义Tabs

背景 项目中Tabs的使用可以说是特别的频繁&#xff0c;但是官方提供的Tabs使用起来&#xff0c;存在tab选项卡切换动画滞后的问题。 原始动画无法满足产品的UI需求&#xff0c;因此&#xff0c;这篇文章将实现下面页面滑动&#xff0c;tab选项卡实时滑动的动画效果。 实现逻…...

算法 并查集

目录 前言 一 并查集的思路 二 并查集的代码分析 三 实操我们的代码 四 并查集的代码优化 总结 前言 并查集主要是用来求解集合问题的&#xff0c;用来查找集合还有就是合并集合&#xff0c;可以把这个运用到最小生成树里面 一 并查集的思路 1 并查集的相关的操作…...

EP 架构:未来主流方向还是特定场景最优解?

DeepSeek MoE架构采用跨节点专家并行&#xff08;EP&#xff09;架构&#xff0c;在提升推理系统性能方面展现出巨大潜力。这一架构在发展进程中也面临诸多挑战&#xff0c;其未来究竟是会成为行业的主流方向&#xff0c;还是仅适用于特定场景&#xff0c;成为特定领域的最优解…...

记忆化搜索与动态规划:原理、实现与比较

记忆化搜索和动态规划是解决优化问题的两种重要方法&#xff0c;尤其在处理具有重叠子问题和最优子结构性质的问题时非常有效。 目录 1. 记忆化搜索&#xff08;Memoization&#xff09; 定义&#xff1a; 实现步骤&#xff1a; 示例代码&#xff08;斐波那契数列&#xff0…...

LLMR//https://github.com/microsoft/llmr?locale=zh-cn

https://github.com/microsoft/llmr?localezh-cn Introduction 这个 repo 包含 LLMR 中描述的代码&#xff0c;实现了混合现实框架的大型语言模型。 此软件包是“用语言创造世界”的原型&#xff0c;它允许通过自然语言实时创建具有视觉、行为和交互元素的对象、工具和场景…...

Free Auto Clicker - 在任意位置自动重复鼠标点击

“想让鼠标自己动起来&#xff0c;解放双手去做更有趣的事&#xff1f;”Free Auto Clicker 就像你的数字小助手&#xff0c;能在任意位置自动重复点击鼠标。从玩游戏到刷网页&#xff0c;这款免费工具让你告别枯燥的重复操作&#xff0c;效率瞬间起飞&#xff01; 你有没有想…...

高考數學。。。

2024上 具体来说&#xff0c;直线的参数方程可以写为&#xff1a; x1t y−t z1t 二、简答题(本大题共5小题&#xff0c;每小题7分&#xff0c;共35分。) 12.数学学习评价不仅要关注结果评价&#xff0c;也要关注过程评价。简要说明过程评价应关注哪几个方面。…...

MWC 2025|紫光展锐联手美格智能发布5G通信模组SRM812

在2025年世界移动通信大会&#xff08;MWC 2025&#xff09;期间&#xff0c;紫光展锐携手美格智能正式推出了基于紫光展锐V620平台的第二代5G Sub6G R16模组SRM812&#xff0c;以超高性价比方案&#xff0c;全面赋能合作伙伴&#xff0c;加速5G规模化应用在各垂直领域的全面落…...

5分钟快速搭建一个 SpringBoot3 + MyBatis-Plus 工程项目

环境 idea 2023.3.5 jdk 17 mysql 8 创建SpringBoot工程 创建SpringBoot工程&#xff0c;这里有两种方式可选&#xff0c;一种是使用idea提供的Spring Initializr自动创建&#xff0c;一种是通过Maven Archetype手动创建 自动创建SpringBoot工程 使用Spring Initializr创建…...

深度学习-大白话解释循环神经网络RNN

目录 一、RNN的思想 二、RNN的基本结构 网络架构 ​关键点 三、RNN的前向传播 四、RNN的挑战:梯度爆炸和梯度消失 问题分析 ​示例推导 五、LSTM:RNN的改进 核心组件 ​网络架构 3. LSTM 的工作流程 4. 数学公式总结 5. LSTM 的优缺点 ​优点 ​缺点 6. LSTM 的…...

20.<Spring图书管理系统①(登录+添加图书)>

PS&#xff1a;关于接口定义 接口定义&#xff0c;通常由服务器提供方来定义。 1.路径&#xff1a;自己定义 2.参数&#xff1a;根据需求考虑&#xff0c;我们这个接口功能完成需要哪些信息。 3.返回结果&#xff1a;考虑我们能为对方提供什么。站在对方角度考虑。 我们使用到的…...

windows下使用Hyper+wsl实现ubuntu下git的平替

文章目录 前言一、安装Hyper、wsl1. 安装Hyper2. 安装wsl 二、配置Hyper三、安装并使用git总结 前言 众所周知&#xff0c;Ubuntu下安装git只需执行sudo apt install git即可使用默认终端拉取代码&#xff0c;但是Windows上使用git既没有linux便捷&#xff0c;又没有MacOS优雅…...

Python在实际工作中的运用-提取Pdf文件内容

Pdf文件是我们日常工作中经常会遇到的一种文件格式&#xff0c;对于这种文件的提取 pdfplumber 库可以非常出色的完成处理工作&#xff0c;它是一个纯 Python 第三方库&#xff0c;适合 python 3.x 版本&#xff0c;通常用来查看pdf各类信息&#xff0c;能有效提取文本、表格&…...

Python+Vue+数据可视化的考研知识共享平台(源码+论文+讲解+安装+调试+售后)

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 程序介绍 近些年来&#xff0c;科技以一种近乎狂飙突进的态势呈爆发式发展&#xff0c;成果之丰硕…...

VirtualBox虚拟机MacOS从Big Sur升级到Sequoia(失败)

VirtualBox虚拟机里安装好Big Sur版本&#xff0c;尝试升级到Sequoia&#xff0c;但是最终失败了。 软件升级 直接在系统偏好-软件更新里可以看到提示&#xff0c;提示可以升级到15版本Sequoia 点击同意&#xff0c;看能不能升级到Sequoia吧。升级前先用时光做了备份。 升级…...

深度学习---卷积神经网络

一、卷积尺寸计算公式 二、池化 池化分为最大池化和平均池化 最常用的就是最大池化&#xff0c;可以认为最大池化不需要引入计算&#xff0c;而平均池化需要引出计算&#xff08;计算平均数&#xff09; 每种池化还分为Pooling和AdaptiveAvgPool Pooling(2)就是每2*2个格子…...

深入解析网络协议:从OSI七层模型到HTTP与TCP/IP的关系

在网络的世界里&#xff0c;理解不同协议如何协同工作以实现高效、可靠的通信至关重要。无论是构建动态的Web应用&#xff0c;还是进行复杂的网络编程&#xff0c;对基础协议的理解都是不可或缺的。本文首先介绍OSI七层模型&#xff0c;这是一个为网络系统设计提供通用参考框架…...

链表-相关面试算法题

目录 面试题 02.04. 分割链表 面试题 02.05. 链表求和 面试题 02.06. 回文链表 面试题 02.07. 链表相交 面试题 02.04. 分割链表 面试题 02.04. 分割链表 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点…...

CSS Overflow 属性详解

CSS Overflow 属性详解 在网页设计和开发中,CSS Overflow 属性是一个非常重要的特性,它决定了当内容超出其容器大小时应该如何处理。本文将详细介绍 CSS Overflow 属性的相关知识,包括其语法、作用、常用属性值以及一些实际应用场景。 1. CSS Overflow 属性概述 CSS Over…...

一、MySQL备份恢复

一、MySQL备份恢复 1.1 MySQL日志管理 数据库中数据丢失或被破坏可能原因 误删除数据库 数据库工作时&#xff0c;意外断电或程序意外终止 由于病毒造成的数据库损坏或丢失 文件系统损坏后&#xff0c;系统进行自检操作 升级数据库时&#xff0c;命令语句不严格 设备故…...

Python-04BeautifulSoup网络爬虫

2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…...