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.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: RFC: Prototype for a user threading library in Ada Date: Wed, 6 Jul 2016 11:25:18 +0200 Organization: Aioe.org NNTP Server Message-ID: References: <58b78af5-28d8-4029-8804-598b2b63013c@googlegroups.com> NNTP-Posting-Host: vZYCW951TbFitc4GdEwQJg.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 X-Notice: Filtered by postfilter v. 0.8.2 Xref: news.eternal-september.org comp.lang.ada:31026 Date: 2016-07-06T11:25:18+02:00 List-Id: On 05/07/2016 23:53, Randy Brukardt wrote: > "Dmitry A. Kazakov" wrote in message > news:nl84rj$h70$1@gioia.aioe.org... >> On 2016-07-02 06:13, Randy Brukardt wrote: >> >>> Seriously, I'm thinking that thread scheduling overhead could be >>> reduced/eliminated by the task supervisor, and thus there's no real >>> problem >>> with writing Ada tasks this way -- except of course that existing >>> implementations don't try to do this sort of optimization. >> >> There could be OS limitations on the number of threads a process may have. > > It would be weird if one couldn't have as many threads as there are cores. > (And if not, then one has to have more processes rather than more threads.) I strongly disagree, especially when we are talking about tasks. A task is a logical entity independent on the host architecture. Then if the OS supports non-busy I/O waiting, and most OSes do, it makes a lot of sense to have many threads, most of which blocked waiting for something. >> I was thinking about "user-scheduled" tasks, which are not scheduled at >> all. Some user task explicitly releases one task from the pool and gets >> control back when that task calls to an entry. > > Yes, that's how all tasks work in Janus/Ada. Of course, the problem is to be able to mix both types of tasks being able to hint the compiler which one it should take. >> The important point I believe is preemption. "User-scheduled" tasks would >> not be required to be preemptive. > > Nothing in the core language of Ada requires tasks to be pre-emptive. Some applications rely on time sharing and most do on close to instant switching to a task of higher priority. -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de