digitalmars.D.learn - Use the D dylib in my C++ program,when the D's GC(in the dylib
- Dsby (9/9) Jan 30 2016 Use the D dylib in my C++ program,when the D's GC(in the dylib
- Chris Wright (7/9) Jan 30 2016 The GC will stop every thread it knows about. If you have a C++ thread
- Dsby (3/14) Jan 30 2016 Thanks, if I use the D dylib,I should run " rt_init(); " in every
- Mike Parker (6/8) Jan 30 2016 No. rt_init only needs to be called once for the process. You
- Mike Parker (2/3) Jan 30 2016 Sorry, that's core.thread.thread_attachThis
- Dsby (2/5) Jan 30 2016 ok。thanks.
Use the D dylib in my C++ program,when the D's GC(in the dylib runtime) run. will not my program stop? My lib.so is writed in D, and I use the GC.and then I am used the dll in my program that is writed in C++. I want to know when the GC(in lib.so's runtime) start runing, will my program be stoped,until the GC stop? sorry , my english is bad. I will use chinese to describe this question: 我用D语言写了一个的动态库,其中里面的内存分配和回收用的是GC。现在我的C++程序去调用这个动态库。我想知道,当动态库所依赖的的D的运行时中GC运行的时候,是不是我的整个程序都会暂停住,知道GC回收完毕再次唤醒?
Jan 30 2016
On Sat, 30 Jan 2016 14:41:18 +0000, Dsby wrote:Use the D dylib in my C++ program,when the D's GC(in the dylib runtime) run. will not my program stop?The GC will stop every thread it knows about. If you have a C++ thread that you want to run while the GC is running, you can get that by not telling the D runtime about it. This will limit your ability to interact with D from that thread somewhat -- and it will interfere more with your ability to *safely* interact with D even more. If you never allocate GC memory, of course, the GC will never run.
Jan 30 2016
On Saturday, 30 January 2016 at 16:06:37 UTC, Chris Wright wrote:On Sat, 30 Jan 2016 14:41:18 +0000, Dsby wrote:Thanks, if I use the D dylib,I should run " rt_init(); " in every thread which i used the D dylib?Use the D dylib in my C++ program,when the D's GC(in the dylib runtime) run. will not my program stop?The GC will stop every thread it knows about. If you have a C++ thread that you want to run while the GC is running, you can get that by not telling the D runtime about it. This will limit your ability to interact with D from that thread somewhat -- and it will interfere more with your ability to *safely* interact with D even more. If you never allocate GC memory, of course, the GC will never run.
Jan 30 2016
On Sunday, 31 January 2016 at 03:45:01 UTC, Dsby wrote:Thanks, if I use the D dylib,I should run " rt_init(); " in every thread which i used the D dylib?No. rt_init only needs to be called once for the process. You need to call core.thread.attach_this [1] so that runtime is aware of your external thread. Note that this does not apply to the thread that calls rt_init.
Jan 30 2016
On Sunday, 31 January 2016 at 05:28:02 UTC, Mike Parker wrote:need to call core.thread.attach_this [1] so that runtime isSorry, that's core.thread.thread_attachThis
Jan 30 2016
On Sunday, 31 January 2016 at 05:29:06 UTC, Mike Parker wrote:On Sunday, 31 January 2016 at 05:28:02 UTC, Mike Parker wrote:ok。thanks.need to call core.thread.attach_this [1] so that runtime isSorry, that's core.thread.thread_attachThis
Jan 30 2016