diff --git a/pl/threads.yap b/pl/threads.yap index 9db283677..b2084ca38 100644 --- a/pl/threads.yap +++ b/pl/threads.yap @@ -247,7 +247,9 @@ thread_join(Id, Status) :- '$erase_thread_info'(Id0), '$thread_destroy'(Id0). - +thread_cancel(Id) :- + (Id == main; Id == 0), !, + '$do_error'(permission_error(cancel, thread, main), thread_cancel(Id)). thread_cancel(Id) :- '$check_thread_or_alias'(Id, thread_cancel(Id)), '$thread_id_alias'(Id0, Id),