Re: dispatcher

2017-09-06 Thread Psychological Cleanup via Digitalmars-d-learn

On Wednesday, 6 September 2017 at 09:47:34 UTC, user1234 wrote:
On Wednesday, 6 September 2017 at 05:57:18 UTC, Psychological 
Cleanup wrote:
I have a C callback that must call some functions declared in 
D. I can't call them off the C thread because it will result 
in a violation. What is a good way to dispatch the call to the 
main D program?


I'm thinking that I might have to create an extra thread that 
monitors for when a call needs to occur and does so. Doesn't 
seem very effective though? Does anyone know how C# does it?


1/ mark the D function as "extern(C)".
2/ take care to how things are passed to the D functions, 
especially arrays.
3/ take care not to mutate memory created from the D side...i.e 
copy after the call.


This wont work. The callback must be relatively performant and 
must access the D code on the D side normally.





Re: dispatcher

2017-09-06 Thread user1234 via Digitalmars-d-learn
On Wednesday, 6 September 2017 at 05:57:18 UTC, Psychological 
Cleanup wrote:
I have a C callback that must call some functions declared in 
D. I can't call them off the C thread because it will result in 
a violation. What is a good way to dispatch the call to the 
main D program?


I'm thinking that I might have to create an extra thread that 
monitors for when a call needs to occur and does so. Doesn't 
seem very effective though? Does anyone know how C# does it?


1/ mark the D function as "extern(C)".
2/ take care to how things are passed to the D functions, 
especially arrays.
3/ take care not to mutate memory created from the D side...i.e 
copy after the call.


Re: dispatcher

2017-09-06 Thread Kagamin via Digitalmars-d-learn
On Wednesday, 6 September 2017 at 05:57:18 UTC, Psychological 
Cleanup wrote:
I'm thinking that I might have to create an extra thread that 
monitors for when a call needs to occur and does so.


Would work.
If your code doesn't conflict with GC, it's fine to work in an 
unregistered thread.


dispatcher

2017-09-06 Thread Psychological Cleanup via Digitalmars-d-learn
I have a C callback that must call some functions declared in D. 
I can't call them off the C thread because it will result in a 
violation. What is a good way to dispatch the call to the main D 
program?


I'm thinking that I might have to create an extra thread that 
monitors for when a call needs to occur and does so. Doesn't seem 
very effective though? Does anyone know how C# does it?