Getting completely (I mean ENTIRELY) rid off GC
Sean Kelly via Digitalmars-d
digitalmars-d at puremagic.com
Thu Sep 11 12:18:55 PDT 2014
On Thursday, 11 September 2014 at 19:14:42 UTC, Marc Schütz wrote:
> On Thursday, 11 September 2014 at 16:02:31 UTC, Sean Kelly
> wrote:
>> On Thursday, 11 September 2014 at 13:16:07 UTC, Marc Schütz
>> wrote:
>>> On Thursday, 11 September 2014 at 12:38:54 UTC, Andrey
>>> Lifanov wrote:
>>>> Hello everyone! Being a C/C++ programmer I don't understand,
>>>> why such language as D (system programming language)
>>>> implemented garbage collector as a core feature, not as
>>>> additional optional module or library.
>>>
>>> I can enlighten you ;-) The reason is safety. Past experience
>>> (especially with C & C++) has shown that manual memory
>>> management is easy to get wrong. Besides, certain features
>>> would not easily be possible without it (dynamic arrays,
>>> closures).
>>
>> GC is hugely important for concurrent programming as well.
>> Many of the more powerful techniques are basically impossible
>> without garbage collection.
>
> There is an interesting alternative that the Linux kernel uses,
> called RCU (read-copy-update). They have a convention that
> references to RCU managed data must not be held (= borrowed by
> kernel threads as local pointers) across certain events,
> especially context switches. Thus, when a thread modifies an RCU
> data structure, say a linked list, and wants to remove an
> element from it, it unlinks it and tells RCU to release the
> element's
> memory "later". The RCU infrastructure will then release it once
> all processors on the system have gone through a context switch,
> at which point there is a guarantee that no thread can hold a
> reference to it anymore.
Yes, RCU is one approach I was thinking of. The mechanism that
detects when to collect the memory is basically a garbage
collector.
More information about the Digitalmars-d
mailing list