使用D1和dll会出现什么问题?

时间:2011-04-02 17:23:45

标签: dll d dmd

如果c ++程序调用dll并且c ++程序是多线程的,那么使用dmd编译器(D1)编译的dll会出现什么问题?

1 个答案:

答案 0 :(得分:3)

D使用stop-the-world garbage collector,这意味着它需要能够在收集期间暂停访问D管理的内存的所有线程。为此,运行时必须有这些线程的列表。

Writing Win32 DLLs in D的D2准则有关于添加DLL_THREAD_ATTACH / DLL_THREAD_DETACH处理程序以通知运行时新线程的说明,但是the D1 version of the article仅提到“尚未支持多个线程”。因此,如果您被迫使用D1,您可能必须使用全局锁同步所有DLL的入口点(导出的函数),或以其他方式处理同步。