On Tue, 22 Apr 2014 09:48:28 -0400, Ola Fosheim Grøstad <[email protected]> wrote:

On Tuesday, 22 April 2014 at 13:39:54 UTC, Steven Schveighoffer wrote:
On Tue, 22 Apr 2014 09:29:28 -0400, Ola Fosheim Grøstad Can you explain this?

When you use a C/C++ framework you don't know what happens to the pointers you hand to it.

Those are typically well-documented, but yes, you rely on "insider" knowledge. You can mark C functions with the appropriate attributes so the D compiler can enforce this for you. I think we should make reference counting work, as long as you don't call mischievous library code. We take a similar approach to other safety aspects of D.

You also don't know which threads call your D-functons from that framework. (Assuming the framework is multi-threaded). To know this you are required to know the internals of the framework you are utilizing or inject runtime guards into your D functions?

Or just mark those objects sent into the framework as shared. Having multi-threaded RC isn't bad, just not as efficient.

One thing that would be nice is to allow moving a data pointer from one thread to another. In other words, as long as your data is contained, it can pass from one thread to another, and still be considered unshared.

I think sooner or later, we are going to have to figure that one out.


By mistake? How?

By insertion into a global datastructure that happens at a lower layer than the higher level you allocate on.

I think this is what you are talking about above, or is there something else?

-Steve

Reply via email to