[Rd] Why no race condition when returning UNPROTECT-ed memory fromC?
Sklyar, Oleg (London)
osklyar at ahl.com
Wed Apr 14 10:21:38 CEST 2010
Because there is no second thread to do that, R is single threaded. The
gc could only be run from within another R API command or macro, but
there is none in between.
Best
Oleg
Dr Oleg Sklyar
Research Technologist
AHL / Man Investments Ltd
+44 (0)20 7144 3803
osklyar at maninvestments.com
> -----Original Message-----
> From: r-devel-bounces at r-project.org
> [mailto:r-devel-bounces at r-project.org] On Behalf Of Dominick Samperi
> Sent: 14 April 2010 06:51
> To: r-devel at r-project.org
> Subject: [Rd] Why no race condition when returning
> UNPROTECT-ed memory fromC?
>
> Consider the C (or C++) code called from the .Call interface:
> SEXP foo() {
> SEXP *p = PROTECT(allocVector(REALSXP, 10));
> ...
> UNPROTECT(1);
> return p;
> }
>
> Why is there no danger that the allocated memory will be garbage
> collected after the UNPROTECT, but before the return of p?
>
> I have used code like this for some time and have never had a
> problem, but I'm not sure if/why it is guaranteed to work.
>
> Thanks,
> Dominick
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
**********************************************************************
Please consider the environment before printing this email or its attachments.
The contents of this email are for the named addressees ...{{dropped:19}}
More information about the R-devel
mailing list