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: buffer1.nntp.dca1.giganews.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!usenet.blueworldhosting.com!feeder01.blueworldhosting.com!feeder.erje.net!1.eu.feeder.erje.net!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail From: Paul Rubin Newsgroups: comp.lang.ada Subject: Re: If not Ada, what else... Date: Wed, 29 Jul 2015 21:54:58 -0700 Organization: A noiseless patient Spider Message-ID: <87si86mehp.fsf@jester.gateway.sonic.net> References: <2215b44f-8a89-47c6-a4c4-52b74d2dac45@googlegroups.com> <9e492c82-868d-43d3-a18a-38274400e337@googlegroups.com> <40184feb-4053-4ac3-8eaa-c3bd9cd8a77c@googlegroups.com> <10272577-945f-4682-85bc-8ad47f3653ae@googlegroups.com> <87si8i81k2.fsf@atmarama.net> <8076cbd0-2655-4c98-b70e-cb5f0c32e4ba@googlegroups.com> <5e6cb30b-5f8c-4fed-969e-3941315ecba0@googlegroups.com> <87si87nf8k.fsf@jester.gateway.sonic.net> <877fpiom3q.fsf@jester.gateway.sonic.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: mx02.eternal-september.org; posting-host="d4217d68945dedf510265c644f2a7daa"; logging-data="17173"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18+LrJn8ej6WgGWB2ay77OX" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) Cancel-Lock: sha1:lPLezvWnKHdbimCJP4aFz0/3gv8= sha1:SHrJMo74ySJxBD1TVTAyAUsDYUI= Xref: number.nntp.giganews.com comp.lang.ada:194469 Date: 2015-07-29T21:54:58-07:00 List-Id: "Randy Brukardt" writes: > It would be completely unnecessary to use any GC with the Ada containers. It just depends on what the program is doing--if the absence of GC constrains how you organize your program, then you are missing out on something by not having it. Consider a multi-threaded program whose threads communicate through async queues. So a work request comes into one thread, it gets decoded into a dictionary (container instance), and then the dictionary is dropped onto a queue. Another thread later picks it up and processes it, sending the results through yet another queue. This is a very common way to write a Python or Erlang program. But it means you can't rely on syntactic scoping to know when a container is no longer in use. You either have to carefully track where every reference might be, or else use an automatic reclamation scheme (refcounts, GC, or whatever).