Chapter 25 キャンセル処理

25.0.1 ユーザーからのキャンセルを受け付ける。

checkUserInterrupt() は処理の実行途中でユーザーが処理をキャンセルするため「ctrl + c」ボタンが押されたかどうかを確認し、押されていた場合には処理を中止します。長時間を要する処理を実行する場合には、おおよそ数秒に1回程度の頻度で checkUserInterrupt() が実行されるようにすると良いでしょう。

for (int i=0; i<100000; ++i) {
    // 1000 繰り返しごとに中断をチェックします
    if (i % 1000 == 0)
        Rcpp::checkUserInterrupt();

    do_something();
}