[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