digitalmars.D.learn - prevent multiple calls to rt_term
- Ellery Newcomer (14/14) Aug 13 2012 Hello.
- Sean Kelly (13/22) Aug 13 2012 Sounds like what's needed is a call counter, so if rt_init is called N t...
- Ellery Newcomer (2/3) Aug 13 2012 is it valid to call rt_init more than once?
- Sean Kelly (4/9) Aug 13 2012 mes, rt_term must be called N times before the runtime really terminates...
- Ellery Newcomer (5/12) Aug 13 2012 I guess if it were made valid then module constructors would still be ou...
Hello. In Pyd, I am trying to get python extension libraries working, but this requires building shared libraries with D. LDC works adequately for this, if you don't mind not having module constructors or unittests; however, in the presence of multiple shared libraries coordinating rt_init and rt_term seems to be an issue. Currently, I have each shared lib calling rt_init in _init and rt_term in _fini. I would like to know if druntime supports a way to detect if it is running. For rt_term, I have been using rt.dmain2.isHalting, but that seems to have gone away in more recent druntime, and anyways doesn't seem to be working for me. I wonder if it would make more sense to call rt_init and rt_term in the druntime shared lib's _init and _fini?
Aug 13 2012
Sounds like what's needed is a call counter, so if rt_init is called N times= , rt_term must be called N times before the runtime really terminates.=20 On Aug 13, 2012, at 1:14 PM, Ellery Newcomer <ellery-newcomer utulsa.edu> wr= ote:Hello. =20 In Pyd, I am trying to get python extension libraries working, but this re=quires building shared libraries with D. LDC works adequately for this, if y= ou don't mind not having module constructors or unittests; however, in the p= resence of multiple shared libraries coordinating rt_init and rt_term seems t= o be an issue.=20 Currently, I have each shared lib calling rt_init in _init and rt_term in _=fini. I would like to know if druntime supports a way to detect if it is run= ning.=20 For rt_term, I have been using rt.dmain2.isHalting, but that seems to have=gone away in more recent druntime, and anyways doesn't seem to be working f= or me.=20 I wonder if it would make more sense to call rt_init and rt_term in the dr=untime shared lib's _init and _fini?
Aug 13 2012
On 08/13/2012 01:19 PM, Sean Kelly wrote:Sounds like what's needed is a call counter, so if rt_init is called N times, rt_term must be called N times before the runtime really terminates.is it valid to call rt_init more than once?
Aug 13 2012
On Aug 13, 2012, at 2:07 PM, Ellery Newcomer <ellery-newcomer utulsa.edu> wr= ote:On 08/13/2012 01:19 PM, Sean Kelly wrote:mes, rt_term must be called N times before the runtime really terminates.Sounds like what's needed is a call counter, so if rt_init is called N ti=Not currently.=20==20=20 is it valid to call rt_init more than once?
Aug 13 2012
On 08/13/2012 03:37 PM, Sean Kelly wrote:On Aug 13, 2012, at 2:07 PM, Ellery Newcomer <ellery-newcomer utulsa.edu> wrote:I guess if it were made valid then module constructors would still be out? IE if N shared libraries bring N sets of modules to the table and rt_init is called N times, then what's to prevent some module constructors from being run more than once?On 08/13/2012 01:19 PM, Sean Kelly wrote:Not currently.Sounds like what's needed is a call counter, so if rt_init is called N times, rt_term must be called N times before the runtime really terminates.is it valid to call rt_init more than once?
Aug 13 2012