Debug help - Programming in D page 633 - concurrency shared(Exception) warnings

Brother Bill brotherbill at mail.com
Sat Aug 30 11:43:27 UTC 2025


On Saturday, 30 August 2025 at 03:21:14 UTC, Steven Schveighoffer 
wrote:
> `Tid` can only send or receive shared or immutable data. This 
> is a long standing requirement, and it makes sense.
>
> The thing is, this data is shared *only* when it is going 
> through the message system. Once it's out, you can remove the 
> `shared` because the sender has forgotten it.
>
> So the solution is to cast to shared *only* for transmitting. 
> That is, you cast to shared to `send`, and then cast away from 
> shared on the other side after you `receive`.
>
> It is imperative that you forget the data you have sent (the 
> exception) from the sender, as now it can't be considered 
> shared any more.
>
> Also note, that you shouldn't catch the shared exception 
> directly, just catch a normal exception and cast it.
>
> Why require the casting? Because there is no language mechanism 
> to validate a shared piece of data, or anything it contains is 
> not still referenced. We rely on the user to tell the compiler 
> via a cast.
>
> -Steve

I tried various code changes, none of which worked.
Kindly provide code changes to fix warnings that reflect modern D 
programming.


More information about the Digitalmars-d-learn mailing list