[Haskell-cafe] Top Level <-

Brandon S. Allbery KF8NH allbery at ece.cmu.edu
Sun Aug 31 17:52:17 EDT 2008


On 2008 Aug 31, at 13:20, Ganesh Sittampalam wrote:
> On Sun, 31 Aug 2008, Brandon S. Allbery KF8NH wrote:
>> On 2008 Aug 31, at 12:01, Ganesh Sittampalam wrote:
>>> On Sun, 31 Aug 2008, Brandon S. Allbery KF8NH wrote:
>>>> On 2008 Aug 31, at 11:20, Ganesh Sittampalam wrote:
>>>>> Where do the filehandle structures live in the latter case?
>>>> The place you clearly think so little of that you need to ask:  
>>>> process-global (or process-local depending on how you think about  
>>>> it) storage.  And everything in that storage must have locking.
>>
>> You'll have to look at specific implementations.  One that I can  
>> think of off the top of my head is Perl 5's "ithreads"; there is a  
>> distinguished allocation store which is global to all ithreads, and  
>> the interpreter instance gives you primitives for locking and  
>> mutexing (see "use threads::shared;").
>
> I'm afraid I don't see how this generalises to sharing something  
> across an entire process where the things that want to do the  
> sharing are not in or controlled by the same shared library. In  
> particular the filehandle structures required for buffered I/O need  
> to be common to every single piece of code in the process that might  
> want to use them, no matter what language or language implementation  
> that code uses.


For that you probably want to look at how ld.so.1 and libc interact to  
share the malloc pool and the stdin/stdout/stderr, among others.

-- 
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university    KF8NH




More information about the Haskell-Cafe mailing list