On Monday, 14 August 2017 at 19:22:23 UTC, Steven Schveighoffer
wrote:
On 8/13/17 11:40 PM, Jonathan M Davis via Digitalmars-d-learn
wrote:
On Saturday, August 12, 2017 18:57:44 Arek via
Digitalmars-d-learn wrote:
I have the folowing problem:
I like to envelope the class object in struct to control the
destruction moment and then send this object to another
thread/fiber (or task, cause I use vibe-d).
I can't find any method to make it working. Any ideas?
Unfortunately, send and receive do not currently work with
shared because of
issues with Variant, which they use internally.
This can't be a correct statement. This is the whole point of
shared.
-Steve
First of all, I'm not native English speaker, so forgive me
possible misunderstanding
In my opinion the whole problem of 'shared' is that when I use
send/receive operation (I believe it's should be something
similar to go's channels or erlang messages) I do not want to
share the memory so any "shared" concept is useless.
What I really would like to get is possibility to make:
// in first thread
Unique!MyObject msg = new MyObject()
send(msg.release);
// in other thread:
auto msg = receiveOnly!(Unique!MyObject)();
My object disappears in "send" operation and its new instance is
constructed on receive.
If I can ensure the uniqueness of the object, there is no need to
"share" it or synchronize the access.
But now such operation is impossible and the compiler forces me
to cope with shared if MyObject has any references to other areas
of memory.
Anyway, thanks for all replies.
Arek