On Sat, 30 Aug 2008, Ashley Yakeley wrote:

Ganesh Sittampalam wrote:
On Sat, 30 Aug 2008, Ashley Yakeley wrote:

Ganesh Sittampalam wrote:
This seems fine to me. It's based on something that already does work properly across a process scope,

But you agree that IORefs define a concept of "process scope"?

I'm not sure that they *define* process scope, because it might be safe to use them across multiple processes; it depends on OS-dependent properties. But they exist *at least* at process scope.

How can one use IORefs across multiple processes? They cannot be serialised.

Firstly, that's a property of the current implementation, rather than a universal one, IMO. I don't for example see why you couldn't add a newIORef variant that points into shared memory, locking issues aside.

Also, the issue is not whether you can *use* them across multiple processes, but whether they are unique across multiple processes. Uniqueness has two possible definitions; aliasing, and representational equality. No two IORefs will ever alias, so by that definition they exist at global scope. For representational equality, that exists at least at process scope, and perhaps more.

Ganesh
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to