Charles,
1. Perhaps this question is better directed at the R-help or
R-pacakge-devel mailinglist.
2. It basically means that R itself can only evaluate one R expression at
the time.
The parallel package circumvents this by starting multiple R-sessions and
dividing workload.
Compiled code called by R (such as C++ code through RCpp or C-code through
base R's interface) can execute multi-threaded code for internal purposes,
using e.g. openMP. A limitation is that compiled code cannot call R's C API
from multiple threads (in many cases). For example, it is not thread-safe
to create R-variables from multiple threads running in C. (R's variable
administration is such that the order of (un)making them from compiled code
matters).
I am not very savvy on Rcpp or XPtr objects, but it appears that Dirk
provided answers about that in your SO-question.
Best,
Mark
Op do 12 mei 2016 om 14:46 schreef Charles Determan <cdetermanjr at gmail.com
R Developers,
Could someone help explain what it means that R is single threaded? I am
trying to understand what is actually going on inside R when users want to
parallelize code. For example, using mclapply or foreach (with some
backend) somehow allows users to benefit from multiple CPUs.
Similarly there is the RcppParallel package for RMatrix/RVector objects.
But none of these address the general XPtr objects in Rcpp. Some readers
here may recognize my question on SO (
http://stackoverflow.com/questions/37167479/rcpp-parallelize-functions-that-return-xptr
)
where I was curious about parallel calls to C++/Rcpp functions that return
XPtr objects. I am being a little more persistent here as this limitation
provides a very hard stop on the development on one of my packages that
heavily uses XPtr objects. It's not meant to be a criticism or intended
to
be rude, I just want to fully understand.
I am willing to accept that it may be impossible currently but I want to
at
least understand why it is impossible so I can explain to future users why
parallel functionality is not available. Which just echos my original
question, what does it mean that R is single threaded?
Kind Regards,
Charles
[[alternative HTML version deleted]]