cool-retro-term 是一款模拟旧阴极射线管屏幕外观和感觉的终端模拟器。它旨在提供视觉享受、可定制性,并且相对轻量级。它使用 qtermwidget (Konsole) 的 QML 移植:https://github.com/Swordfish90/qmltermwidget。该终端模拟器可在 Linux 和 macOS 上运行,需要 Qt5。建议使用最新的 LTS 版本。颜色、字体和效果等设置可以通过上下文菜单访问。要获取最新版本,请访问 Releases 页面并下载最新的 AppImage(Linux)或 dmg(macOS)。或者,大多数发行版,如 Ubuntu、Fedora 或 Arch,已经在官方仓库中打包了 cool-retro-term。请查看 wiki 并按照说明在 Linux 和 macOS 上构建它。
布赖恩·基恩曾是一名航空公司飞行员,后退役并担任航空业高管,但他对机场仍然着迷。 甚至在退休后,他创立了AV Pro Designs公司,该公司制造著名机场的模型微缩景观。(他们将模型卖给博物馆、机构和“微缩景观社区”,无论那是什么。) 在设计1:1400比例的模型时,基恩借鉴了他自己作为飞行员的经验和档案照片,重现机场在特定时期的景象。 例如,该公司对肯尼迪机场(JFK)的还原是70年代和80年代的样子,洛杉矶机场(LAX)是80年代和90年代的样子。 他们对孟买机场(BOM)的模型尤其引人注目,因为他们制作了夜景。 该公司还制作了希思罗机场和纽瓦克机场;香港启德机场和法国戴高乐机场正在制作中。
## std::Mutex vs. parking_lot::Mutex:深入分析与决策指南
团队考虑从 Rust 的标准 `std::sync::Mutex` 切换到 `parking_lot::Mutex`,从而引发了对两者性能差异的深入调查。 尽管初步搜索结果偏向 `parking_lot`,但作者希望更深入地理解,因此对两种实现方式进行了详细检查,并进行了大量的基准测试。
`std::Mutex` 使用平台特定的实现(通常是 Futex),并采用内核管理的队列,优先考虑吞吐量。 然而,在高度竞争的情况下,这可能导致线程饥饿。 另一方面,`parking_lot::Mutex` 在所有平台上使用单一算法和用户空间队列,优先考虑公平性和可预测性。 它通过更小的内存占用(始终为 1 字节)和公平定时器(防止无限期锁定)来实现这一点。
在各种场景下的基准测试表明,`std::Mutex` 在低到中等竞争和短临界区中表现出色。 然而,`parking_lot::Mutex` 在高竞争、突发工作负载以及存在潜在锁垄断的场景中表现出卓越的性能,提供更稳定的等待时间并防止线程饥饿。
**选择 `std::Mutex` 的时机:** 需要零依赖项,竞争较低,需要用于调试的毒化(poisoning),或平台特定优化至关重要。 **选择 `parking_lot::Mutex` 的时机:** 公平性至关重要,可预测的行为至关重要,内存占用很重要,或存在锁垄断的风险。
最终,选择取决于应用程序的特定需求——吞吐量与公平性和可预测性。