GC object finalization not guaranteed

Leandro Lucarella llucax at gmail.com
Sat Apr 18 15:36:30 PDT 2009


Rainer Deyke, el 18 de abril a las 16:18 me escribiste:
> Leandro Lucarella wrote:
> > You missed the point. I'm not talking about freeing the memory. I'm
> > talking about finalizers. A finalizer could send a "bye" packet throgh the
> > net. That can't be handled by the OS.
> 
> It can't be handled by the GC either, because:
>   - This would require a high-level wrapper that knows about the "bye"
> packet around a low-level socket that doesn't know.  By the time the
> high-level wrapper is finalized, the low-level socket may already have
> been collected.

I don't know what you are talking about, I'm talking about this:

class X {

	//...

	~this()
	{
		socket.send(bye_packet);
		socket.close();
	}

>   - It is bad form to wait for the next garbage-collection cycle before
> cleanly terminating connections.
> 
> What you need is RAII, not garbage collection.

I'm talking about long lived resources for example.

I don't understand people defending non-guaranteed finalization over
guaranteed finalization, even when it's:
a) Possible
b) Easy to do
c) Probably more efficient to terminate the program than the "safe"
   fullcollect()

I really don't get it. Seriously.

-- 
Leandro Lucarella (luca) | Blog colectivo: http://www.mazziblog.com.ar/blog/
----------------------------------------------------------------------------
GPG Key: 5F5A8D05 (F8CD F9A7 BF00 5431 4145  104C 949E BFB6 5F5A 8D05)
----------------------------------------------------------------------------
Hey you, out there on your own
Sitting naked by the phone
Would you touch me?



More information about the Digitalmars-d mailing list