Sending a socket to another thread

Andrew Wiley debio264 at gmail.com
Tue Feb 15 15:08:11 PST 2011


On Tue, Feb 15, 2011 at 4:59 PM, Andrew Wiley <debio264 at gmail.com> wrote:
> On Tue, Feb 15, 2011 at 4:13 PM, lurker <lurker at mailinator.com> wrote:
>>> What platform and version of DMD? There was a bug in the Socket
>>> implementation on Windows recently where the WinSock data was
>> either
>>> initialized or deinitialized multiple times. I don't remember the
>>> details, but I remember having "weird crashes."
>>
>> Yes, Windows + dmd 2.51.
>
> I looked it up, and that bug was fixed in 2.50, so that's not the problem.
>>
>>> Yes, I've done this in the past.
>>
>> Great. At least is posible. Do you have an example available
>> somewhere? It would really help
>
> Actually, I lied, I was getting sockets and spawning new threads with
> them as arguments.
> However, the attached source compiles and runs on Linux (although it
> doesn't do any sort of cleanup when it exits, so I can get errors on
> the bind call that the address is in use).
> Disclaimer:
> I'm not sure whether casting to and away from shared like I do is
> actually safe, so hopefully someone more knowledgeable can chime in on
> that. From a type standpoint, as long as ownership of the socket is
> passed between threads cleanly and only one thread can access the
> socket at a time, nothing odd should happen, but I'm not sure how/if
> TLS and the actual details of shared could break this. I'll see what I
> can dig out as far as that goes.
>

TDPL seems to say that casting away shared is alright - just make sure
it isn't ever actually shared between threads and you should be fine.


More information about the Digitalmars-d-learn mailing list