ara.t.howard wrote:
> in fairness we're talking about ruby here where that is definitely not 
> true.  it's extremely painless to have reliable ipc with ruby using drb 
> or com with sqlite as a message store.

Since DRb operates over a network it's not reliable by definition; you 
have to deal with the other end going away, etc. With COM, you're either 
going over a network or using same-machine IPC mechanisms that are only 
a bit more reliable (or loading things in-process, which is then back to 
threads). And with sqlite, you need to synchronize writes and possibly 
reads or you need to hope sqlite will do that for you (I don't know if 
it does). And then you're into locking, atomicity, etc.

So for IPC or cross-"process" data comm or sharing, I think processes:

- give you fewer ways to shoot yourself in the foot
- the remaining ways are somewhat less likely to be dangerous
- but they mostly leave the options that are by and large the most 
complicated and the most prone to complete failure (e.g. external 
process goes away completely).

Meanwhile, threads

- give you many, many ways to shoot yourself in the foot
- sometimes with catastrophic consequences
- but you can turn the complexity knob down much lower

Choose wisely.

- Charlie