我在
Win32api中遇到了
ATOM
类型,并且在 Acrobat API 中也遇到了 ASAtom。
据我所知,原子是哈希表的键,通常是字符串,以便在应用程序之间快速查找和共享数据。这是正确的吗?原子类型的词源是什么?
编辑
经过一番广泛的搜索,我注意到Prolog使用原子,所以这个词一定有一些起源。看起来它曾经用来指代任何单个数据。
ATOM 是一个 16 位 Windows 句柄类原语。它的值对于用户模式是完全不透明的。它不是指针或索引。
typedef 无符号短 ATOM;
至于
ATOM
这个名字的词源,我知道我曾经在一些旧的Microsoft Win32 API文档中看到过它是“Aaccess to Memory”的缩写或类似的东西。它是一个用于简单数字标识符(也称为“句柄”)的术语,代表系统中的一些内部数据结构。
出于显而易见的原因,向用户提供指向这些结构的直接指针并不明智。首先,因为它们驻留在内核空间中,其次,因为它违反了封装。然后,用户可以释放不属于它的内存,或者覆盖它,或者一些其他愚蠢的想法。因此,操作系统只需为其提供一些替换编号标签(即 ATOM),然后即可使用该编号标签向系统请求数据。用户传递小数字而不是整个庞大的数据结构也更快。用户不需要关心内存分配和其他东西,或者通过不再有效的指针访问一些数据,这可能会导致他们的程序崩溃。
/ RegistrClassEx 函数(以及其他一些函数)返回 ATOM 数据类型。
ATOM 唯一标识正在注册的类,但如果函数失败,它将返回零,因此您可以像这样测试函数是否失败
ATOM a=0;
.
.
a = RegisterClassEx(your_window);
if (0==a)
{
//code for function failed
}
Atom 是一个指针,指向一个唯一的、不可变的零个或多个序列 任意字节。大多数原子是指向空终止字符串的指针, 但指向任何字节序列的指针都可以是原子。只有一个 任何原子只出现一次,这就是它被称为原子的原因。二 如果原子指向同一位置,则它们是相同的。比较两个 通过简单地比较指针来确定字节序列是否相等是其中之一 原子的优点。另一个优点是使用原子可以节省空间 因为每个序列只出现一次。原子常常 用作按序列索引的数据结构中的键 任意字节而不是整数。所描述的表和集合 第 8 章和第 9 章是示例。