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的入口点(导出的函数),或者以某种方式处理同步。