Added error checking code to the predicates thread_exit/1 and thread_signal/2.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1763 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
bf002885d7
commit
2896253b4c
@ -272,6 +272,9 @@ thread_detach(Id) :-
|
|||||||
thread_detach(Id) :-
|
thread_detach(Id) :-
|
||||||
'$do_error'(existence_error(thread, Id),thread_detach(Id)).
|
'$do_error'(existence_error(thread, Id),thread_detach(Id)).
|
||||||
|
|
||||||
|
thread_exit(Term) :-
|
||||||
|
var(Term), !,
|
||||||
|
'$do_error'(instantiation_error, thread_exit(Term)).
|
||||||
thread_exit(Term) :-
|
thread_exit(Term) :-
|
||||||
'$thread_self'(Id0),
|
'$thread_self'(Id0),
|
||||||
'$run_at_thread_exit'(Id0),
|
'$run_at_thread_exit'(Id0),
|
||||||
@ -595,16 +598,22 @@ thread_sleep(Time) :-
|
|||||||
thread_signal(Thread, Goal) :-
|
thread_signal(Thread, Goal) :-
|
||||||
var(Thread), !,
|
var(Thread), !,
|
||||||
'$do_error'(instantiation_error,thread_signal(Thread, Goal)).
|
'$do_error'(instantiation_error,thread_signal(Thread, Goal)).
|
||||||
|
thread_signal(Thread, Goal) :-
|
||||||
|
\+ integer(Thread), \+ atom(Thread), !,
|
||||||
|
'$do_error'(domain_error,thread_or_alias,thread_signal(Thread, Goal)).
|
||||||
thread_signal(Thread, Goal) :-
|
thread_signal(Thread, Goal) :-
|
||||||
'$check_callable'(Goal,thread_signal(Thread,Goal)).
|
'$check_callable'(Goal,thread_signal(Thread,Goal)).
|
||||||
thread_signal(Thread, Goal) :-
|
thread_signal(Thread, Goal) :-
|
||||||
recorded('$thread_alias',[Id|Thread],_), !,
|
atom(Thread),
|
||||||
|
recorded('$thread_alias',[Id|Thread],_),
|
||||||
|
'$valid_thread'(Id), !,
|
||||||
'$thread_signal'(Id, Goal).
|
'$thread_signal'(Id, Goal).
|
||||||
thread_signal(Thread, Goal) :-
|
thread_signal(Thread, Goal) :-
|
||||||
integer(Thread), !,
|
integer(Thread),
|
||||||
|
'$valid_thread'(Thread), !,
|
||||||
'$thread_signal'(Thread, Goal).
|
'$thread_signal'(Thread, Goal).
|
||||||
thread_signal(Thread, Goal) :-
|
thread_signal(Thread, Goal) :-
|
||||||
'$do_error'(type_error(integer,Thread),thread_signal(Thread, Goal)).
|
'$do_error'(existence_error(thread, Thread),thread_signal(Thread, Goal)).
|
||||||
|
|
||||||
'$thread_signal'(Thread, Goal) :-
|
'$thread_signal'(Thread, Goal) :-
|
||||||
( recorded('$thread_signal',[Thread|_],R), erase(R), fail ; true ),
|
( recorded('$thread_signal',[Thread|_],R), erase(R), fail ; true ),
|
||||||
|
Reference in New Issue
Block a user