多线程程序杂记

DFT笔记 DC/AC mode与Func DFT scan可以分为DC和AC两种,区别如下图。 阅读详情

     最近又完成一个C++服务器项目的开发,使用了多线程,在测试过程中遇到一些问题,记录一下,以供以后查看。

     1 内存泄露

        由于采用了缓冲的机制,而且操作的是大块数据,因此用的new比较多。在做压力测试的时候经常把内存耗光,导致死机。

        当确认存在内存泄露的时候,首先要先把代码检查了一遍,查找所有的new和delete操作是否配对使用了。检查代码可以从设计层面上纠正一些问题,但对于编程过程中的疏忽或设计中遗露的细节就可能错过,尤其对于那些变化中的代码,一不小心就会忘记释放一些资源。其次可以借助一些工具来检查内存泄露,在此推荐一下valgrind,特别易用,内存泄露报告特别清晰,告诉哪个指针在代码的什么地方没有释放。

     2 程序崩溃

     当你仔细处理指针时,崩溃经常是由于设计多线程程序时考虑不周造成的。由于未正确实施同步,导致竞态条件的存在,程序可能会偶发性出现问题,小到结果出错,大到崩溃。处理两个线程的竞争是容易的,如果设计方案是多于两个线程从不同分支访问了共享数据,则有时候可能不太容易意识到同步的必要性,此时就会出现问题。

      程序在测试时出现了崩溃,而且报告pure virtual method called terminate called without an active exception,从网上搜索了一下,前人说这个问题是因为我们析构一个还在使用中的对象,这个绝对是多线程未能正确同步造成的,一个线程还在使用一个对象,而别一个线程开始清理这个对象。多数情况下,程序崩溃只有一个段错误的提示,不会给出上面这个提示,因此调试也比较困难。

     从我的使用经验来看,目前面向对象的设计还不是特别方便的融入多线程设计,在设计面向对象的多线程程序时,需要仔细考虑以保证访问对象的线程安全性,并避免死锁,期望有一种新的语言能特别方便的实现并发处理并不用考虑锁的存在。openMP及erlang应该是不错的选择,只是还有些小众,适用性也不是特别广泛。

     3 软件设计与实现鸿沟

     设计是高层结构,在从设计向代码的转换过程中,细节是魔鬼。

评估篇| 大模型评测综述 1、基于人类的评测。与针对基础大语言模型的自动化评测不同,微调大语言模型的评测更加注重模型在实际应用场景中的表现,如与人类交互的自然度、对齐度等。2、基于模型的评测。例如,AlpacaEval 排行榜 基于由大语言模型合成的人类需求指令作为评测任务,然后收集待评估大模型的回应,并采用 GPT-4 等大语言模型作为评测员,将待评估大语言模型的输出与参考输出进行成对比较。1、大语言模型对评估设置极为敏感,包括问题的表述方式、提示样本的选择以及答案的解析策略等,这些细微的差别都可能导致评估结果的显著变化。 阅读详情

相关推荐

Python+Appium实现泛微OA自动打卡:5分钟搭建移动端自动化脚本

移动端自动化测试是软件测试与办公自动化领域的重要技术方向,其核心原理是通过程序模拟用户对手机应用界面的操作,实现重复性任务的自动执行。Appium作为主流的开源移动端自动化框架,基于WebDriver协议,支持跨平台且无需修改被测应用,为自动化脚本开发提供了标准化接口。在工程实践中,结合Python简洁的语法和丰富的生态,可以快速构建稳定可靠的自动化解决方案。这一技术组合的价值在于能够高效处理“重复性、低价值、高频率”的日常操作,例如考勤打卡、数据填报等办公场景,显著提升工作效率。本文以泛微OA Emobi

weixin_28836875的博客 389

C# 多线程相关一点杂记

多线程

weixin_45884724的博客 444

DDS协议--[第一章][概述]

Data Distribute Service,数据分发服务:数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。

qq_41816308的博客 1152

多线程理解杂记

个人理解:无锁线程安全的依据:利用volatile和final禁止重排序, 第二个操作位volatile写时或第一个操作位volatile读时, 不允许重排序 final基础类型:写不能排到构造函数之外。(保证别的线程引用该对象时,final变量已经被赋值,而非fianl则不保证) final引用类型:写与引用不能重排序。注意溢出问题 构造函数  obj=this 多线程好

baidu_34464794的博客 252

PHM 2010数据集解读

PHM数据挑战赛是一项面向所有潜在与会者的竞赛。今年的挑战集中在使用测力仪、加速度计和声发射数据估计高速数控铣床刀具的RUL上。 博客对PHM 2010数据集的组成和信号进行了可视化。

cnjs1994的博客 7648

DeepSeek赋能公文写作:从高效成文到精准传情的全维度指南

摘要:AI赋能公文写作的精准化实践 公文写作长期面临框架混乱、素材匮乏、表达不规范、修改低效等痛点。DeepSeek等AI工具通过"精准指令+分步赋能"模式实现突破:首先明确公文的目的性、逻辑性和规范性特征;其次采用包含场景、类型、目的等要素的指令模板;再分四步实施:框架搭建确保层次分明,内容填充解决素材问题,表达优化适配不同语体,合规校验把关格式规范。典型案例显示,AI能将数据罗列转化为"数据+成果+价值"的生动表述,使公文既规范又具感染力。这种AI赋能的写作方法显

通俗易懂学IT 231

问题杂记

问题杂记汇总 实用杂记 chrome跨域,在chrome属性中加上: 方法① --enable-webgl --ignore-gpu-blacklist --allow-file-access-from-files --args --disable-web-security --user-data-dir –allow-file-access-from-files 方法②–disable-web-...

Fimooo的博客 485

22、忆阻器、忆阻系统及其神经形态应用综述

本文综述了忆阻器与忆阻系统的理论基础及其在神经形态系统中的广泛应用。从忆阻器的基本定义出发,介绍了其在非线性电路、存储技术、通信和神经形态计算等领域的应用潜力。重点探讨了基于忆阻器的神经元模型(如Hodgkin-Huxley、FitzHugh-Nagumo和Hindmarsh-Rose模型)、突触实现方式及多种忆阻神经网络架构,包括细胞神经网络、脉冲神经网络和递归神经网络等。此外,深入分析了忆阻器在水库计算中的理论研究与硬件实现进展,展示了其在时间序列处理、模式识别和信号预测等方面的优异性能。尽管忆阻技术前

kiwi8的博客 207

进程和线程的分配策略【杂记】

进程和线程的分配策略【杂记】

空有精品无人问,倒也自然 4760

【AI智能体】Codex 开发聚合搜索应用项目实战操作详解

Codex 开发聚合搜索应用项目实战操作详解

congge 3095

与OpenClaw同类性质的AI智能体框架/工具汇总(小白友好)

OpenClaw的核心定位是「开源、本地优先、可执行真实任务的AI代理」,核心价值是让AI从“聊天”落地到“动手干活”(操控电脑/服务器、处理办公/系统任务)。结合这一核心,以下是同类性质的工具/框架,按「小白易上手程度」排序,每个产品重点说明和OpenClaw的异同、核心优势及适配场景,方便小白快速区分选择。

hy行者勇哥的博客 2107

程序员自我修养杂记

计算机 对于系统程序开发者来说,计算机三个部件最为关键:CPU、内存、I/O控制芯片。 高速的北桥芯片:为了协调CPU、内存和高速的图形设备。此时慢速的I/O总线已经无法满足需求。 低速设备的南桥芯片:由于北桥芯片运行速度非常高,于是人们有设计了低速设备的南桥芯片,磁盘、usb、键盘、鼠标等设备都连接在南桥芯片上,由南桥芯片将他们汇总后链接到北桥上。 SMP(对称多处理器)多CPU的

王旭—201706毕业—实习生—后台开发 719

华南理工大学-大学物理实验-不良导体热导率测量

不良导体热导率测量 引言 导热系数(又叫热导率)是反映材料热性能的重要物理量。热传导是热交换的三种(热传导、对流和辐射)基本形式之一,是工程热物理、材料科学、固体物理及能源、环保等各个研究领域的课题。材料的导热机理在很大程度上取决于它的微观结构,热量的传递依靠原子、分子围绕平衡位置的振动以及自由电子的迁移。在金属中电子流起支配作用,在绝缘体和大部分半导体中则以晶格振动起主导作用。因此,某种材料的导热系数不仅与构成材料的物质种类密切相关,而且还与材料的微观结构、温度、压力及杂质含量相联系。在科学实验和工程设计

mohen_777的博客 871

面试真题-杂记

关键点:1.maven2.springboot pom.xml 父子关系springboot底层使用maven管理依赖,通过控制pom.xml父子关系来完成细节配置,在父pom中定义具体框架和版本号以及额外的信息。提供了很多场景的spring-boot-starter 的 pom.xml文件,来标准化的引入依赖避免冲突看springboot的源码。

yuanmomoya的博客 1497

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【Java多线程杂记】

1、在栈内存中新建一个对象oneObject,而这个栈内存对象引用了在堆内存中新建的那个对象。 private Object oneObject=new Object(); 2、synchronized关键字的使用方式。需要博客专栏总结。 (1)采用细粒度的锁,可以使线程争用时间变短,从而提高效率。 (2)锁的信息是记录在堆内存变量中的,而不是记录在引用这个堆内存变量的引用上的。 (3...

风暴计划 396

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

linux 杂记

线程同步:1.互斥锁2.读写锁3.条件变量4.信号量5.自旋锁6.屏障(barrier)进程同步:1.互斥锁2.读写锁3.条件变量4.记录锁(record locking)5.信号量6.屏障(barrier)-pthread Adds support for multithreading with the pthreads library. This option sets flags for b...

httpdrestart的博客 196

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

杂记

1.多线程: 多线程是一个软件进程中使用多条处理线程。 2.分布式: 分布式指数据分布,是同一套软件中的数据在多个软件客户端,服务端进行处理。可以是在同一台电脑或者服务端开多个软件,但更多是指通过网络连接多台客户端与服务端进行数据处理。是把海量数据分布在不同的计算机或者软件中分别处理的一种软件结构。 3.并行: 并行是指两个或者多个事件在同一时刻发生。 4.并发: 是指两个或多个事件在同一时间间隔...

小小核桃 185

Linux中基于c++多线程编程学习杂记:线程同步

文章转载自爱编程的大丙

m0_68731112的博客 473

杂记杂记杂记

一句话理解ThreadLocal,threadlocl是作为当前线程中属性ThreadLocalMap集合中的某一个Entry的key值Entry(threadlocl,value),虽然不同的线程之间threadlocal这个key值是一样,但是不同的线程所拥有的ThreadLocalMap是独一无二的,也就是不同的线程间同一个ThreadLocal(key)对应存储的值(value)不一样,从而到达了线程间变量隔离的目的,但是在同一个线程中这个value变量地址是一样的。不存在多线程间共享的问题。

qq_61009660的博客 226

evc小项目杂记

最近要做一个wince5.0的小程序,使用evc4.0工具,jilu

echojiangyq的专栏 1246

Redis-Epoll模型,以及多线程模型总结

redis epoll模型以及多线程模型总结

u014753478的博客 1287

Java编程杂记四

文章目录自动装箱和拆箱枚举Java多线程的开发中有三种特性原子性可见性有序性volatile保证原子性? 自动装箱和拆箱 如:Integer integer = 9; int n = integer; 就相当于 Integer integer = Integer.valueOf(9); //自动装箱 int n = integer.intValue(); //自动拆箱 枚举 枚举本质就是一个类,在一个文件中已经定义了一个public class,就不能定义public enum公用的枚举类。如在同一文件中

天空之蓝的博客 212

PYQT5杂记

此处改为Form1=QtWidgets.QWidget()是错误的!QWidget类继承自QObject类和QpaintDevice类QWidget能够绘制自己和处理用户的输入-QWidget是Qt中所有窗口组件类的父类(super class)-QWidget是所有窗口组件的抽象-Qt中的每个窗口组件都是一个QWidget-QWidget类对象长作为父组件或顶级组件使用对话框是与用户进行简短交互的顶层窗口-QDialog是Qt中所有对话框窗口的基类。

Xiao_Bai_hh的博客 281

Java杂记

1、Object类 类层次结构的根类:每个类都使用 Object 作为超类(都直接或间接继承此类)。所有对象(包括数组)都实现这个类的所有方法 package java.lang; public class Object { /*一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用*/ private static native void registerNa...

qq_14985223的专栏 372

C++初学杂记

Lambda 函数与表达式 lambda表达式只是一种语法糖,因为所有其能完成的工作都可以用其它稍微复杂的代码来实现。 Lambda 参考文献

我是谁我在哪我在学什么 317

JVM杂记

文章目录内存模型引用类型安全点安全区域垃圾回收垃圾回收器serialParNew收集器Parallel Scavenge(吞吐量优先)Serial Old 单线程收集,使用标记整理算法,可以与Parallel Scavenge搭配,或作为CMS收集器的后备预案Parallel Oldcmscms和full gcg1内存分配和回收策略永久代垃圾回收类加载机制加载验证文件格式验证元数据验证字节码验证符...

总结沉淀 458
上一篇: C++11中值得关注的几大变化
下一篇: 实施单元测试的设计思路
zzulp
博客等级 码龄19年 464粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值