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

Reply via email to