HPC 模板库,STL 的补充
HPC 模板库是标准模板库的补充,提供线程安全的容器。
作者:Anthony Daniels
引言
此软件包旨在为用户提供线程安全的容器和类,用于高性能计算 (HPC) 中的应用,其中并行编程很常见。如今,多核计算机将这种并行性带入了日常使用领域。在这种环境中提供线程安全的容器和类非常重要。 HPC 模板库 (HTL) 旨在取代 STL 的某些部分。 它是来自 STL、QT、Boost 和 SigSlots 库的类的合并和重写。所有容器现在都通过在关键操作周围实现互斥锁来实现线程安全。它被设计为动态链接库,供用户直接包含在他们的项目中。 它专为 Windows 平台编写,尽管用户可以通过仅更改 HtlThread
和 HtlTime
子包来将其用于 Linux / Unix。代码设计为易于阅读且文档齐全。 HTL 具有 14 个子包,用于分配不同类的功能。该库的许可证是 LGPL。此库的 CSharp 版本已发布在此站点上。
HTL 包概述
HTL 具有 14 个子包,用于分配不同类的功能。这些包如下所示(按字母顺序排列)。可以看出,需要添加一些遗漏的类,但 HTL 大部分已投入使用。 库的单元测试代码的开发也已开始,并在代码包中。 测试将继续进行。
包说明 | 运行状态 |
HtlArchive :包含序列化和反序列化对象所需的所有类。 它包含一个通用的存档树/节点系统和三个不同的序列化程序包(XML、XDL、JSON、Binary)。 | 存档模型 (100%) XML (100%) XDL(100%) JSON (100%) 二进制(0%) 待添加 |
HtlAtomic :包含一个模板类,该类允许通过其运算符将任何对象转换为原子对象(线程安全)。 | (0 %) 待添加 |
HtlBase :包含使用 HTL 系统使对象可序列化的基类。 它还有一个基本对象,该对象能够使用 HTL 信号槽系统进行信号槽。 –(完全运行) | (100%) |
HtlContainer :包含 HTL 的所有容器类 (Htl1DVector 、Htl1DList 、Htl2DArray 、Htl3DMatrix 、HtlListMap 、HtlMap 等)。 此集合中的所有容器都可以在 HTL 系统中进行序列化。 –(完全运行) | (100%) |
HtlGlobal :包含全局使用的枚举类型、结构等。–(完全运行) | (100%) |
HtlGUID :包含三个全局唯一标识符 (GUID); 64 位、128 位和 256 位。 –(完全运行) | (100%) |
HtlMacro :包含 HTL 中允许的宏集。 HTL 很少使用宏,因为一般来说,宏是一种糟糕的编程实践。 | (100%) |
HtlMath :包含补充 STL <math.h> 库的基本数学函数。 | (100%) |
HtlRandNumGen :包含用于随机数生成器和随机分布生成器的系统。 | (100%) |
HtlSignalSlot :这是一个基于 sigslots 库的信号和槽库。 尽管如此,该库已进行了一些更改。 | (100%) |
HtlString :包含替换 std::string 的 string 类。 它们是可互操作的,这意味着您可以在 HtlString 和 std::string 之间直接切换。 | (100%) |
HtlTest :包含 HTL 单元测试系统。 这是一个基于测试名称的单元测试系统,类似于 boost,但其中未使用宏。 | (100%) |
HtlThread :包含所有与线程相关的类,包括互斥锁、信号量、线程等。 | (100%) |
| (50%) 需要添加倒计时计时器 |