2
如果C++程序調用dll和C++程序是多線程的,那麼我可以期待使用dmd編譯器(D1)編譯的dll有什麼問題?使用D1和dll可能會出現什麼問題?
如果C++程序調用dll和C++程序是多線程的,那麼我可以期待使用dmd編譯器(D1)編譯的dll有什麼問題?使用D1和dll可能會出現什麼問題?
D使用stop-the-world garbage collector,這意味着它需要能夠在收集期間暫停所有訪問D管理內存的線程。爲了做到這一點,運行時必須有這些線程的列表。
的D2指引Writing Win32 DLLs in D對增加DLL_THREAD_ATTACH/DLL_THREAD_DETACH處理通知的新線程的運行時間指令,但是the D1 version of the article只提到,「多個線程,不支持呢。」因此,如果你被迫使用D1,你可能必須使用全局鎖定來同步所有DLL的入口點(導出的函數),或者以某種方式處理同步。