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