Logtalk 2.29.1 files.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@1744 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
57
Logtalk/examples/threads/sync/SCRIPT.txt
Normal file
57
Logtalk/examples/threads/sync/SCRIPT.txt
Normal file
@@ -0,0 +1,57 @@
|
||||
=================================================================
|
||||
Logtalk - Object oriented extension to Prolog
|
||||
Release 2.29.1
|
||||
|
||||
Copyright (c) 1998-2006 Paulo Moura. All Rights Reserved.
|
||||
=================================================================
|
||||
|
||||
|
||||
% start by loading the loading the example:
|
||||
|
||||
| ?- logtalk_load(sync(loader)).
|
||||
...
|
||||
|
||||
|
||||
% send three asynchronous messages whose corresponding methods perform output operations:
|
||||
|
||||
| ?- threaded_ignore(nasty1::io(alpha)), threaded_ignore(nasty1::io(digit)), threaded_ignore(nasty1::io(alpha)).
|
||||
|
||||
a0ab1bc2c3ddefef45gg6hh7ii8jkjk9
|
||||
llmmnnopopqqrrsstztzyyxxwwuv
|
||||
uv
|
||||
|
||||
Yes
|
||||
|
||||
|
||||
% send three asynchronous messages whose corresponding methods perform database updates
|
||||
% (this may or may not work, most likely will throw an exception):
|
||||
|
||||
| ?- threaded_ignore(nasty1::update_db(_)), threaded_ignore(nasty1::update_db(_)), threaded_ignore(nasty1::update_db(_)).
|
||||
|
||||
No
|
||||
|
||||
|
||||
% the best solution is to declare predicates that need to be thread synchronized as "synchronized",
|
||||
% as exemplified in object "nasty2":
|
||||
|
||||
| ?- threaded_ignore(nasty2::io(alpha)), threaded_ignore(nasty2::io(digit)), threaded_ignore(nasty2::io(alpha)).
|
||||
|
||||
abcdefghijklmnopqrstzyxwuv
|
||||
0123456789
|
||||
abcdefghijklmnopqrstzyxwuv
|
||||
|
||||
Yes
|
||||
|
||||
|
||||
| ?- threaded_call(nasty2::update_db(_)), threaded_call(nasty2::update_db(_)), threaded_call(nasty2::update_db(_)).
|
||||
|
||||
Yes
|
||||
|
||||
| ?- threaded_exit(nasty2::update_db(X)), threaded_exit(nasty2::update_db(Y)), threaded_exit(nasty2::update_db(Z)).
|
||||
|
||||
|
||||
X = 1
|
||||
Y = 2
|
||||
Z = 3
|
||||
|
||||
Yes
|
||||
Reference in New Issue
Block a user