On Thursday, 8 August 2013 at 21:16:36 UTC, David Nadlinger wrote:
On Thursday, 8 August 2013 at 20:08:11 UTC, JR wrote:
I put together http://dpaste.dzfl.pl/d7322971 earlier to demonstrate some of these errors, though I didn't mention the raciness of passing pointers there. To test that race I used http://dpaste.dzfl.pl/e6fd4569.

That's just a bug in your code; when taking a pointer to stack data (which is un-@safe), you have to take care not to escape it from the scope.

Can I manually store it on the heap and let the garbage collector keep it safe? I know of the opposite -- instantiating a class on the stack with the scope keyword -- but that doesn't help me here.

I guess I could have the sender wait for an 'okay done' priority message from the receiving thread before escaping the scope, but I don't have any guarantees that some other thread doesn't send a different message in the meantime (such as the server reader passing on a new raw string) when I'm not ready for such.

Also I could *technically* have a __gshared struct/class act as a container for an array of these event structs (with synchronized rotating push and front properties), but my pride would take a huge blow and I don't have enough ice cream.

Reply via email to