Hello,
I am writing an R interface for one of my C++ programs. The computations
in C++ are very time consuming (several hours), so the user needs to be
able to interrupt them. Currently, the only way I found to do so is
calling R_CheckUserInterrupt() frequently. Unfortunately, there are
several problems with that:
1. Calling R_CheckUserInterrupt() interrupts immediately, so I have no
possibility to exit my code gracefully. In particular, I suppose that
objects created on the heap (e.g., STL containers) are not destructed
properly.
2. Calling R_CheckUserInterrupt() within a parallel OpenMP loop causes
memory corruptions. Even if I do so within a critical section, it
usually results in segfaults, crashes, or invalid variable contents
afterwards. I suppose this is due to the threads not being destroyed
properly. Since most of the time critical computations are done in
parallel, this means I can hardly interrupt anything.
Having a function similar to R_CheckUserInterrupt() but returning a
boolean variable (has an interrupt occurred or not?) would solve these
problems. Is there a way to find out about user interrupt requests (the
user pressing ctrl+c or maybe a different set of keys) without
interrupting immediately?
I would appreciate your advice on this topic.
Best regards,
Peter
______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel