From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a5681531ca1cf09e X-Google-Attributes: gid103376,public From: bobduff@world.std.com (Robert A Duff) Subject: Re: Tasking performance between Ada83 and Ada95 Date: 1997/06/16 Message-ID: #1/1 X-Deja-AN: 248922433 References: <1997Jun6.115223.7384@relay.nswc.navy.mil> Organization: The World Public Access UNIX, Brookline, MA Newsgroups: comp.lang.ada Date: 1997-06-16T00:00:00+00:00 List-Id: In article , Robert Dewar wrote: >However, these days, more and more work is done on multi-processors, and >then of course you have no choice if you want to distribute tasks across >processors other than to use the system level threads. Furthermore, the >efficiency hit from operating these threads on separate processors may >indeed be significant. Are you saying it's impossible to write an Ada run-time system that does parallelism without using operating system threads (on a Unix-like OS)? That's not true -- I've done it. I wrote an Ada 83 RTS that ran on a parallel shared-memory machine where the OS had no threads support. So we created one Unix process per CPU (you need a way to know how many CPUs there are). Almost all memory in all the processes was mapped to the same place. And then the task scheduler decided which task to run in which process according to the usual priority rules. Of course, non-blocking I/O required writing Text_IO (etc) in terms of system calls that don't block, but interrupt when the I/O is done. - Bob