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!feeder.eternal-september.org!aioe.org!.POSTED!not-for-mail From: "Dmitry A. Kazakov" Newsgroups: comp.lang.ada Subject: Re: weird block on Get from basic protected bounded buffer with 2 tasks Date: Tue, 12 Dec 2017 22:16:06 +0100 Organization: Aioe.org NNTP Server Message-ID: References: NNTP-Posting-Host: sWq1fEaAu/L5fGxxOY76vQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 X-Notice: Filtered by postfilter v. 0.8.2 Content-Language: en-US Xref: reader02.eternal-september.org comp.lang.ada:49462 Date: 2017-12-12T22:16:06+01:00 List-Id: On 2017-12-12 20:08, George Shapovalov wrote: > I thought might be prioritizing Gets would make it behave Then the barrier must be Count = 0 or else (Count < maxCount and then Get'Count = 0) i.e. empty or else not full and no pending Get. BTW, prioritizing is a bad idea. If you enforce entry order you also increase possibility of context switches upon bulk buffer updates. If one task makes several Puts and another does several Gets over an empty buffer you may end up switching these tasks for each Put/Get pair. Which defeats the very purpose of buffering. That is for a single core. For multiple cores prioritizing would have no sense at all. > So, what gives? Am I missing something here or is this a bug? > > The used platform: Gentoo Linux, gnat-gpl-2017, gcc-6.3.0 On some older platforms tasking must be kicked on, if I correctly remember. E.g. by beginning the main with delay 0.0; -- Regards, Dmitry A. Kazakov http://www.dmitry-kazakov.de