[Rcpp-devel] Thread handling

Dirk Eddelbuettel edd at debian.org
Tue Apr 26 22:41:35 CEST 2011

On 26 April 2011 at 14:46, Sean Robert McGuffee wrote:
| Hi,
| I?ve finally got a working start to using Rcpp to interface with some of my c++
| code, and now I have a practical question about the interface. My first task
| was simply to launch algorithms from R, and thanks to a lot of help from this
| community, I finally got that task solved. Now, however, I lose all response
| from R as soon as I launch many long and intensive algorithms. That isn?t to
| say it isn?t working, and the responsiveness comes back after the jobs
| eventually finish. Ideally, I would like to let my users continue to use R
| while their jobs run, and I can handle that in c++ with threads. However, I
| also want to let my users know when their jobs finish. Ordinarily I would
| register some sort of callback function in one of my own programs to alert a
| user when a threaded task finishes. However, I don?t know enough about R to
| know how to send a message to a user, especially from external code that has
| been called. As is, I?m able to return an argument such as a SEXP value from my
| function, and I can have it give feedback. However, if I do that before the
| thread finishes, I don?t know if there is a way to access it any more after the
| thread finishes. Likewise, if I were to wait until the thread finishes, then I
| might as well not call a thread. So what would be recommended as an Rcpp
| suggested mechanism for alerting users in R as to when threaded jobs finish?

Sorry that I keep repeating myself to you, but you may want to look at the
r-devel list which featured a series of posts (a "thread" ;-) under the
subject header  "Interrupting C++ code execution"  discussing just that.

You should also realize that R is inherently single-threaded.


Gauss once played himself in a zero-sum game and won $50.
                      -- #11 at http://www.gaussfacts.com

More information about the Rcpp-devel mailing list