c++ - 多线程应用程序中的 SetCurrentDirectory

标签 c++ windows multithreading winapi visual-c++

我知道 SetCurrentDirectory 不应该用在多线程应用程序中,因为当前目录在进程中的所有线程之间共享。

考虑到这一点,设置目录的最佳方法是什么。 通过在打开文件时包含完整路径名而不是首先使用 SetCurrentDirectory 导航到它们,通常可以避免设置目录,但这是唯一的解决方案吗?

最佳答案

我以前遇到过这个问题。

任何需要当前目录概念来支持相对路径或搜索的对象(例如构建工具)都有一个成员属性,它用它的“当前”路径维护,然后构建完整路径以打开/创建/搜索.

CurrentPath 的初始值可以在应用程序的加载阶段检索一次,例如main()、WinMain()、DllInit() 等通过 GetCurrentDirectory 存储在一个全局变量中。之后忽略 Win32 版本。

OPENFILENAME 结构有一个初始目录成员,因此文件打开/保存对话框不必使用 Win32 当前目录。

关于c++ - 多线程应用程序中的 SetCurrentDirectory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062306/

相关文章:

c++ - 如何在忽略特定字符的情况下将单词读入字符串

.Net 使用特殊文件夹表示法

windows - 使用 Start 命令让 Windows 以批处理模式启动 R

java - 对 thread.yield 的描述是否正确?

c++ - 在 While 循环中初始化 Pthreads

java - Java中如何向线程共享变量?

c++ - 用数学表达式拆分字符串

c++ - 在不同进程之间传输 cv::Mat 对象的最佳方式是什么?

c++ - 模糊的天空盒纹理

c++ - Windows中的互斥问题