File tree 2 files changed +31
-34
lines changed
2 files changed +31
-34
lines changed Original file line number Diff line number Diff line change @@ -36,36 +36,33 @@ instantly. The `ask` function is synchronous and waits for its
36
36
message to be processed and returns the result of the actor's
37
37
processing.
38
38
39
- * TODO Pong Example
39
+ **** TODO Pong Example
40
40
41
41
Here is a little pong example, I might add a more convenient way to
42
42
communicate with singleton actors:
43
43
44
44
#+begin_src lisp
45
- (defun pong ()
46
- (let (*pinger* *ponger*)
47
- (define-actor pinger () (c)
48
- (format t "~a: ping!~%" c)
49
- (force-output)
50
- (sleep 0.2)
51
- (if (< c 10)
52
- (send *ponger* (1+ c))
53
- (progn (close-actor *ponger*)
54
- (close-actor *pinger*))))
55
-
56
- (define-actor ponger () (c)
57
- (format t "~a: pong!~%" c)
58
- (force-output)
59
- (sleep 0.2)
60
- (if (< c 10)
61
- (send *pinger* (1+ c))
62
- (progn (close-actor *ponger*)
63
- (close-actor *pinger*))))
64
-
65
- (setf *ponger* (ponger) *pinger* (pinger))
66
- (send *ponger* 0)
67
- (join-actor *ponger*)
68
- (join-actor *pinger*)))
45
+ (define-actor pinger () (c)
46
+ (format t "~a: ping!~%" c)
47
+ (sleep 0.2)
48
+ (if (< c 10)
49
+ (send :ponger (1+ c))
50
+ (progn (close-actor :ponger)
51
+ (close-actor :pinger))))
52
+
53
+ (define-actor ponger () (c)
54
+ (format t "~a: pong!~%" c)
55
+ (sleep 0.2)
56
+ (if (< c 10)
57
+ (send :pinger (1+ c))
58
+ (progn (close-actor :ponger)
59
+ (close-actor :pinger))))
60
+
61
+ ;; Spawn global named actors
62
+ (pinger :name :pinger)
63
+ (ponger :name :ponger)
64
+
65
+ (send :ponger 0)
69
66
#+end_src
70
67
71
68
* TODO document *self*
Original file line number Diff line number Diff line change 147
147
148
148
; ; I need to create a Join Sync signal I think...
149
149
150
- ; ; (test :close-and-join
151
- ; ; (define-actor counter ((c 0)) (increment)
152
- ; ; (incf c increment))
153
-
154
- ; ; (counter :name :my-counter)
155
- ; ; (send :my-counter 1)
156
- ; ; (is (= 3 (ask :my-counter 2)))
157
- ; ; (close-and-join-actors :my-counter)
158
- ; ; (is (eql nil (gethash :my-counter *registry*))))
150
+ (test :close-and-join
151
+ (define-actor counter ((c 0 )) (increment)
152
+ (incf c increment))
153
+
154
+ (counter :name :my-counter )
155
+ (send :my-counter 1 )
156
+ (is (= 3 (ask :my-counter 2 )))
157
+ (close-and-join-actors :my-counter )
158
+ (is (eql nil (gethash :my-counter *registry* ))))
You can’t perform that action at this time.
0 commit comments