logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

C++中无锁队列与有锁队列的实现

生产者—消费者模型里,队列是线程之间最常见的交接点。「有锁队列」和「无锁队列」经常被拿来比较,但很多介绍把两者讲成了「慢」和「快」的关系,这是不准确的:它们的差别主要在阻塞语义、内存序约束和内存回收代价,而不是一条绝对的性能排序。脱离场景谈谁更快没有意义——在争用激烈时,一个设计良好的互斥量队列完全可能跑赢一个写得不讲究的无锁队列。无锁真正换来的性质是:某个线程被操作系统换出调度时,不会把其他线程

#c++#开发语言
Linux/C++多线程实例学习十字路口车辆调度

十字路口是讲并发时最容易被接受的比喻:四个方向的车流共享一块不能同时占用的区域,谁先进入、谁必须等待、什么时候放行,正好对应线程、互斥量、条件变量和调度策略。很多教材用它来讲「锁」,但讲着讲着就把比喻当成了实现:以为给路口加一把std::mutex就完事,以为信号灯一亮所有车就自动排队,以为线程调度器会替我们保证公平。真实情况要冷静得多。操作系统调度的是线程,不是「车辆」;std::mutex只保

#c++#开发语言
C++学习之命名空间详解

命名空间(namespace)解决的是「名字冲突」这个古老问题。两个库都提供了init(),两个头文件都定义了Node,如果没有命名空间,把它们放进同一个程序就会撞名。C++ 的做法是把名字放进不同的作用域容器,用限定访问。初学者最常见的两个极端,一是完全不写命名空间,所有东西堆在全局;二是在头文件里写,把整个标准库的名字倒进每个包含者的全局作用域。前者迟早撞名,后者会把包含者的代码搅乱,还可能因

#c++#开发语言
C++多线程实现绑定CPU的方法详解

C++ 标准里没有任何 CPU 亲和性(CPU affinity)的 API。标准库的不提供"把这个线程绑到第 N 个核"的能力,也只能告诉你逻辑处理器大概有几个。用管理线程, 再通过拿到平台原生句柄, 调用操作系统的亲和性接口完成绑定。离开操作系统 API,这件事在纯标准 C++ 里做不到。典型误解有两个。第一,以为存在某个——不存在的。第二,以为绑核就是"独占这个核"——不是。亲和性只是限定调

#c++#开发语言
五分钟学会Python 模块和包、文件

这个标题把"模块""包""文件"三个词并列在一起,容易让人以为它们是同一件事的三个叫法。模块(module)和包(package)是导入系统里的两个概念,文件(file)是操作系统里的东西,它们只在"模块通常对应一个.py文件"这一点上沾边。一个包是一整个目录,它不是一个文件;而open()打开的文本文件跟导入系统毫无关系。分不清这三者,就会写出"为什么import找不到我刚建的文件"这类问题。另

#python#开发语言
Ubuntu环境下玩转Python配置的实战开发全指南

Ubuntu 上的 Python 之所以容易配乱,是因为「Python」在这台机器上有两个身份:一个是操作系统自己用的那个(包管理器安装的),另一个是你作为开发者要用的那个。前者被系统工具依赖,后者应该由你自己创建和维护。把这两个身份混为一谈,就是各种「装了个包结果系统设置界面打不开」事故的根源。最常见的误解是「很方便」。它确实方便,代价是往系统解释器里塞进一个 Ubuntu 发行版并不知情、也没

#python#开发语言
PyTorch 简介与安装使用指南

PyTorch 是一个由第三方维护的开源深度学习框架,它并不是 Python 标准库的一部分。这一点必须放在最前面说清楚:很多人以为「装完 Python 就能」,实际不行,必须单独用包管理器安装,而且安装命令和你的操作系统、显卡驱动、Python 版本强相关。本文的定位是「入门与安装」,不会去讲模型结构设计或训练技巧。本文会讲清三件事:PyTorch 的核心对象是什么、它的安装流程和版本匹配规则、

#python#开发语言
C语言入门篇--初识C语言及数据类型

C 语言诞生于 1972 年,至今仍是操作系统内核、嵌入式固件、数据库引擎和大量基础库的实现语言。贴近硬件、类型系统简单但规则严格、把内存管理完全交给程序员。学习 C 语言的第一道坎不是语法,而是数据类型——每个类型占几个字节、能表示多大范围、什么时候会发生转换、哪些行为由标准规定、哪些由编译器自行决定,这些问题如果一开始就含糊,后面写出的程序会充满难以定位的怪现象。初学者最常见的误解是「int就

#c++#开发语言
C语言、Java、Python的选择与未来指南(适合新手)

这是一篇写给刚接触编程、正在纠结「先学哪门语言」的读者的指南。需要先说明:标题里的「未来」不是预言。语言流行度会随技术栈、行业需求和工具链演进而变化,任何具体到薪资、岗位数量、涨跌幅度的数字都很快过期,本文不提供这类数字;需要市场信息时,请查阅主流招聘平台的实时数据,并注意样本偏差。三门语言的定位差异远大于它们的语法差异。C 面向底层,直接操作内存与硬件,是操作系统、嵌入式、驱动、高性能基础设施的

#c++#开发语言
C++多线程实现绑定CPU的方法详解

C++ 标准里没有任何 CPU 亲和性(CPU affinity)的 API。标准库的不提供"把这个线程绑到第 N 个核"的能力,也只能告诉你逻辑处理器大概有几个。用管理线程, 再通过拿到平台原生句柄, 调用操作系统的亲和性接口完成绑定。离开操作系统 API,这件事在纯标准 C++ 里做不到。典型误解有两个。第一,以为存在某个——不存在的。第二,以为绑核就是"独占这个核"——不是。亲和性只是限定调

#c++#开发语言
    共 12 条
  • 1
  • 2
  • 请选择