The "no gc" crowd

Jacob Carlborg doob at me.com
Thu Oct 10 02:17:27 PDT 2013


On 2013-10-10 09:33, Jonathan M Davis wrote:

> You might do that if you're creating the object simply to send it across, but
> it's frequently the case that the object was created well before it was sent
> across, and it frequently had to have operations done it other than simply
> creating it (which wouldn't work if it were shared). So, it often wouldn't
> make sense for the object being passed to be shared except when being passed.

I guess if you're not creating it as "shared" to being with there's not 
way to tell that the given object now is shared an no thread local 
references are allowed.

> And once it's been passed, it's rarely the case that you want it to be shared.
> You're usually passing ownership. You're essentially taking a thread-local
> variable from one thread and making it a thread-local variable on another
> thread. Unfortunately, the type system does not support the concept of thread
> ownership (beyond thread-local vs shared), so it's up to the programmer to
> make sure that no references to the object are kept on the original thread,
> but there's really no way around that unless you're always creating a new
> object when you pass it across, which would result in which would usually be a
> unnecessary copy. So, it becomes like @trusted in that sense.

It sounds like we need a way to transfer ownership of an object to a 
different thread.

> I honestly don't think we can solve it a different way without completely
> redesigning shared. shared is specifically designed such that you have to
> either cast it way to do anything with it or write all of your code to
> explicitly work with shared, which is not something that generally makes sense
> to do unless you're creating a type whose only value is in being shared across
> threads. Far more frequently, you want to share a type which you would also
> use normally as a thread-local variable, and that means casting.

I guess it wouldn't be possible to solve it without changing the type 
system.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list