Hi Christian,

On 27 August 2012 at 14:44, Christian Sigg wrote:
| Dear Dirk
| 
| Thank you for the reply (and for Rcpp and RInside).
| 
| > | Question: Is the RInside destructor not working properly? I would have 
expected that both in foo() and bar(), an instance of R is created and then 
destroyed| immediately, without producing any kind of output.
| > 
| > No, wrong setup. R is single-threaded, and you can have only
| > precisely __ONE__ instance of R in your program. You have two.
| 
| I was not aware that two instances of R are active at the same time. It was 
my expectation that by instantiating the RInside class as a local variable, at 
the end of foo() the destructor R.~RInside() would be called and the 
encapsulated R instance would be terminated, before a new one is instantiated 
in bar(). 

You are of course correct in a narrow sense and in that same sense I was
wrong in my email. You called two consecutive instances of RInside, not two
paralle ones. That could have worked ....

... but we are still talking R here and the underlying R API for C embedding
leaves (as I recall) a bunch of globals around.  So no two sessions.

| I did take a cursory glance at the implementation of ~RInside() before asking 
the question, and the function call
| 
| Rf_endEmbeddedR(0);
| 
| gave me that (wrong) impression. I don't know the R implementation internals.

Right. If you REALLY want this to work, you need to work at that end -- ie in
R's implementation.  RInside would then gladly piggyback on your work. Maybe
all it takes is a big cleanup function. I don't know.  

| > Create one in main() and pass references around.
| 
| 
| Is it possible to terminate the RInside instance instead, and later start a 
new one? I don't think that it is proper to modify main() with the unit testing 
framework that I'm using (gtest), as the tests are discovered without 
explicitly calling them from main().

Do you have one long running instance of main()?  That may be an issue for
you. 

Dirk

-- 
Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com  
_______________________________________________
Rcpp-devel mailing list
Rcpp-devel@lists.r-forge.r-project.org
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel

Reply via email to