Rスクリプトを実行できるC++プログラムを作成することに興味があります。いくつかの設計上の理由から、RInsideのインスタンスを作成し、スクリプトを実行し、結果を取得して、インスタンスを破棄したいと思います。すべてスレッド内。Rはマルチスレッドではなく、RInsideの複数のインスタンスを作成できないことを知っています。しかし、分離されたスレッド内に単一のインスタンスを作成できますか?これを実行しようとすると、コードはコンパイルされますが、実行時に次のエラーが発生します。
Error: C stack usage is too close to the limit
Error: C stack usage is too close to the limit
terminate called after throwing an instance of 'Rcpp::binding_not_found'
what(): binding not found: '.AutoloadEnv'
Aborted
エラーが発生したコードは次のとおりです。
#include <unistd.h>
#include <stdio.h>
#include <pthread.h>
#include <RInside.h>
void *thread_main(void *args){
RInside R(0,NULL);
/* hope to execute an R script here */
printf("--printing from thread--\n");
return NULL;
}
int main(int argc, char *argv[]){
pthread_t tid;
if( pthread_create(&tid, NULL, thread_main, NULL) ){
printf("failed to create thread\n");
return -1;
}
sleep(1);
return 0;
}
R_CStackLimit = (uintptr_t)-1
R拡張機能の作成で推奨されているように設定しようとしましたが、役に立ちませんでした。
私はubuntu、Rバージョン2.15.2、RInsideバージョン0.2.10を実行しています。
これを達成することは可能ですか?または私はRserveのようなことを学ぶ必要がありますか?どうもありがとう!