c++ - 是否有 GetFullPathName 的线程安全版本?
问题描述
MSDN 文档建议不要GetFullPathName()
在多线程应用程序和共享库中使用 - 不幸的是,我正在构建一个多线程共享库。
具体来说,我正在寻找转换双点组件,这样给定当前目录"C:\FolderA\FolderB\FolderC"
,路径"..\..\FolderX\FolderY"
将 yield "C:\FolderX\FolderY"
。
虽然我可以从头开始编写一个,但我希望找到一个更快的解决方案,并且,一个已经尝试和测试过的解决方案。
编辑
查看我的规范后,我可以要求调用者指定一个基本文件夹,而不是依赖于当前目录。但是,我仍然需要转换双点,这是我试图避免的。
请注意,项目要求不包括第三方库,例如 Boost 和 QT,除非该算法可以完全复制到最终解决方案中。
解决方案
导致它线程不安全的问题GetFullPathName
是它依赖于当前目录。
因此,您需要自己使用PathCombine
(或改进版本,例如PathCchCombineEx
)并传递一些东西而不是当前目录。
推荐阅读
- json - 如何在不重复代码的情况下填充 JSON 对象的一部分?
- c# - Xamarin.UITest 在视图中检索所有元素
- android - 在 React Native 中加载屏幕时如何滚动到顶部?
- python - 在测试执行期间重定向文件中的所有类型的异常和标准输出日志 - Python 3
- notepad++ - notepad++ 用户定义语言折叠打开和关闭
- i2c - 什么是广播地址,它在 I2C 中的用途是什么?
- python - 为什么 Python 只使用 4% 的 CPU?
- git - 更改推送到 GitHub 的提交...删除文件
- python - 在 Python 中从 .xlsx 文件中读取图表
- json - 使用 JSON 数组访问数据