【发布时间】:2021-07-25 20:23:03
【问题描述】:
我正在浏览用于文件和目录管理操作的 Win32 API 函数。我看到其中一些函数有它们所谓的“事务”对应物。
示例:
CreateDirectory 和 CreateDirectoryTransacted
RemoveDirectory 和 RemoveDirectoryTransacted
CreateFile 和 CreateFileTransacted
CopyFile 和 CopyFileTransacted
我阅读了对这些事务处理函数的解释,维基百科文章 Transactional NTFS 和 this MSDN Magazine page。但是由于这些页面中的大量术语(对我而言),我并没有清楚地理解这些解释。他们都达成了一个共同的共识,即这些功能是“原子的”。但据我从“原子”这个词所理解的,它是一个原子核,周围有旋转的电子……
你能用基本简单的英文句子解释一下,这些功能的用途和操作是什么?为什么以及何时更喜欢 API 函数的事务版本?
【问题讨论】:
-
本文中的“Atomic”指的是(希腊语)词的本义,即“不可分割”。原子操作是这样的。这样的操作要么成功完成,要么在出现错误的情况下整体失败,因此无论发生什么,都不会有中途执行的结果,例如可能是损坏的文件系统。换句话说:当原子操作在一致状态下执行时,它将总是导致一致状态;旧的一致状态或新的一致状态,但两者之间没有任何关系。
-
也许看看这个:msdn.microsoft.com/en-us/library/hh802690%28v=vs.85%29.aspx,它指出“这里的原子性是指更改要么完全应用要么根本不应用,因为不一致的状态会导致文件损坏”。
-
本网站仅供其专家成员使用,因为即使他们不是他们所询问主题的专家,他们也知道如何提出不会被标记为“离题”的问题。
标签: winapi file-io windows-vista ntfs transactional