[Rd] Enhancement request: anonymous connections
Duncan Murdoch
murdoch at stats.uwo.ca
Sun Jan 1 18:26:23 CET 2006
On 12/28/2005 9:50 AM, Seth Falcon wrote:
> On 27 Dec 2005, murdoch at stats.uwo.ca wrote:
>
>>This is a bug in load, isn't it? load() opens the connection but
>>doesn't close it.
>
>
> Well, it may be that load needs a small fix, but that doesn't fix
> anonymous connections in general, IMO.
No it doesn't. However, I've committed the small fix.
>
> The loop could easily have been:
>
> for (i in 1:50) {
> print(load(url(testUrl, open="r")))
> }
>
> And it doesn't need to be related to url or load:
>
> cat("a line of text\n", file="another-example.txt")
> z <- NULL
> for (i in 1:50) {
> z <- c(z, readLines(file("another-example.txt", open="r")))
> }
>
> Also, connections are "in use" even if they are closed:
>
> for (i in 1:50) {
> if (isOpen(file("another-example.txt")))
> stop("you will not get here")
> }
I think the general problem is that R doesn't have references (or at
least, they aren't in a final, documented state). If the garbage
collector closed a connection, then things would go wrong when there
were two copies of it: the second one would be messed up when the first
was destroyed. If we had references, then opening a connection could
create a connection object and a reference to it; the connection object
would remain as long as there were any references to it, and could be
destroyed (and automatically closed) after the last reference was gone.
Duncan Murdoch
More information about the R-devel
mailing list