Jonathan M Davis Wrote:

> Okay. From what I can tell, it seems to be a recurring pattern with threads 
> that 
> it's useful to spawn a thread, have it do some work, and then have it return 
> the 
> result and terminate. The appropriate way to do that seems to spawn the 
> thread 
> with the data that needs to be passed and then using send to send what would 
> normally be the return value before the function (and therefore the spawned 
> thread) terminates. I see 2 problems with this, both stemming from 
> immutability.
> 
> 1. _All_ of the arguments passed to spawn must be immutable.

They must be shared.  Immutable data is just implicitly shared.

> 2. _All_ of the arguments returned via send must be immutable.

Same here.

> In the scenario 
> that I'm describing here, the thread is going away after sending the message, 
> so 
> there's no way that it's going to do anything with the data, and having to 
> copy 
> it to make it immutable (as will likely have to be done) can be highly 
> inefficient.

It sounds like what you really want is a thread pool.  Maybe passing a shared 
delegate would work?  It would be really nice to get unique sorted out though.  
Passing unique data via tid.send() should work too.

Reply via email to