Re: [Newbies] Do I need to close a FileStream?

2007-03-25 Thread Bert Freudenberg


On Mar 24, 2007, at 17:41 , Tim Johnson wrote:



On Mar 24, 2007, at 3:45 AM, Kyle Hamilton wrote:


The underlying OS has only a certain number of file handles that it
can maintain open at a time.  On UNIX-like systems, there is also
possibly a maximum number of files per process.  If this limit is  
hit,
then no additional files can be opened, and on any attempt to do  
so an

error is returned.


For some reason I was confused and thought that Squeak's garbage  
collector would somehow make me immune from this.  Like when the  
file was no longer being used, it would be closed and purged.


Actually it is indeed. We use finalization for this [*]. However, you  
cannot know _when_ an object actually will be finalized, so you may  
be eating up handles nontheless.



Now I know otherwise :)


It's good practice not to rely on finalization, but treat it as a  
safety net.


- Bert -

[*] See for example
http://www.mail-archive.com/beginners@lists.squeakfoundation.org/ 
msg01719.html

or
http://www.google.com/search?q=squeak+finalization
___
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners


Re: [Newbies] Do I need to close a FileStream?

2007-03-24 Thread Bert Freudenberg

On Mar 24, 2007, at 8:34 , Tim Johnson wrote:


Hi,

Do I need to worry about closing a read-only FileStream when I am  
done reading from it?


Yes. Always. A common pattern is

f := ... open the file stream 
[ ... do something with f ... ] ensure: [f close]

This ensures f is closed even if there is an error in your processing  
code.



What happens if I don't?


Bad Things ;) I'm not exactly sure.

How can I tell if I have lots of open files in my system?   
FileStream allInstances inspect?


You would need to use #allSubInstances and check if they're open.

- Bert -


___
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners


Re: [Newbies] Do I need to close a FileStream?

2007-03-24 Thread Kyle Hamilton

The underlying OS has only a certain number of file handles that it
can maintain open at a time.  On UNIX-like systems, there is also
possibly a maximum number of files per process.  If this limit is hit,
then no additional files can be opened, and on any attempt to do so an
error is returned.

-Kyle H

On 3/24/07, Bert Freudenberg [EMAIL PROTECTED] wrote:

On Mar 24, 2007, at 8:34 , Tim Johnson wrote:

 Hi,

 Do I need to worry about closing a read-only FileStream when I am
 done reading from it?

Yes. Always. A common pattern is

f := ... open the file stream 
[ ... do something with f ... ] ensure: [f close]

This ensures f is closed even if there is an error in your processing
code.

 What happens if I don't?

Bad Things ;) I'm not exactly sure.

 How can I tell if I have lots of open files in my system?
 FileStream allInstances inspect?

You would need to use #allSubInstances and check if they're open.

- Bert -


___
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners




--

-Kyle H
___
Beginners mailing list
Beginners@lists.squeakfoundation.org
http://lists.squeakfoundation.org/mailman/listinfo/beginners