我正在用导出的函数在MSVC++ 2010中编写一个Win32 DLL。其中一些函数返回文件名为LPCSTR
。由于我有时需要在字符串之前进行操作,因此我正在使用一个长度为32184的全局缓冲区变量,它应该覆盖Windows中可能出现的任何文件名,然后我总是初始化并返回需要字符串的位置。C++ DLL中线程安全的字符串缓冲区变量
我的老板使用VB6传统应用程序中的这个库。他现在告诉我他需要它是线程安全的:不幸的是,由于VB6的事件驱动行为,可能会发生这样的情况:即使另一个函数尚未返回,函数也会在我的库中调用。这当然意味着我不能依靠单个内部缓冲区,但每次需要时都必须创建一个,然后将其返回。
2个问题:
我严重依赖于Windows API函数,如
FindFirstFile
从filesystem
和regex
库升压功能。我可以假设他们都是线程安全的吗?如果每次我想要返回一个字符串时,我必须在堆上创建一个新的缓冲区,那么我又在哪里释放内存?
你需要的是不是线程安全的,但重新进入安全 –