我正在用導出的函數在MSVC++ 2010中編寫一個Win32 DLL。其中一些函數返回文件名爲LPCSTR
。由於我有時需要在字符串之前進行操作,因此我正在使用一個長度爲32184的全局緩衝區變量,它應該覆蓋Windows中可能出現的任何文件名,然後我總是初始化並返回需要字符串的位置。C++ DLL中線程安全的字符串緩衝區變量
我的老闆使用VB6傳統應用程序中的這個庫。他現在告訴我他需要它是線程安全的:不幸的是,由於VB6的事件驅動行爲,可能會發生這樣的情況:即使另一個函數尚未返回,函數也會在我的庫中調用。這當然意味着我不能依靠單個內部緩衝區,但每次需要時都必須創建一個,然後將其返回。
2個問題:
我嚴重依賴於Windows API函數,如
FindFirstFile
從filesystem
和regex
庫升壓功能。我可以假設他們都是線程安全的嗎?如果每次我想要返回一個字符串時,我必須在堆上創建一個新的緩衝區,那麼我又在哪裏釋放內存?
你需要的是不是線程安全的,但重新進入安全 –