author | Claus Gittinger <cg@exept.de> |
Tue, 25 Jun 2019 11:09:04 +0200 | |
changeset 5048 | 63f42cfbaf59 |
parent 3505 | 148aeaa05f75 |
permissions | -rw-r--r-- |
2587 | 1 |
"{ Package: 'stx:libbasic2' }" |
2574 | 2 |
|
3493
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
3 |
"{ NameSpace: Smalltalk }" |
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
4 |
|
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
5 |
AbstractBackgroundJob subclass:#BackgroundJob |
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
6 |
instanceVariableNames:'' |
2574 | 7 |
classVariableNames:'' |
8 |
poolDictionaries:'' |
|
2590 | 9 |
category:'System-Support' |
2574 | 10 |
! |
11 |
||
12 |
!BackgroundJob class methodsFor:'documentation'! |
|
13 |
||
2590 | 14 |
documentation |
15 |
" |
|
3493
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
16 |
A BackgroundJob for one-shot computation. When started, it performs it job |
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
17 |
and terminates. User have to explicitly ask job to start again to |
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
18 |
perform new computation. |
2602
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
19 |
|
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
20 |
[author:] |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
21 |
Jan Vrany <jan.vrany@fit.cvut.cz> |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
22 |
|
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
23 |
[instance variables:] |
3493
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
24 |
|
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
25 |
[class variables:] |
2602
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
26 |
|
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
27 |
[see also:] |
3493
e7c920efe4cc
Cleanup: introduced AbstractBackgroundJob, made all other jobs subclass of it.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2976
diff
changeset
|
28 |
BackgroundJob |
2602
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
29 |
" |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
30 |
! |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
31 |
|
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
32 |
examples |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
33 |
" |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
34 |
| job text | |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
35 |
job := BackgroundJob named: 'example job' on:[ |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
36 |
Delay waitForSeconds: 3. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
37 |
Transcript showCR:'One guy said: ', text |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
38 |
]. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
39 |
text := 'Hello world'. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
40 |
job restart. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
41 |
Delay waitForSeconds: 5. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
42 |
text := 'Ahoj Svete!!'. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
43 |
job restart. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
44 |
Delay waitForSeconds: 1. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
45 |
text := 'Haya, I''m talking fast, you should not see the czech greeting'. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
46 |
job restart. |
44d00fea6ee0
Added documentation and examples
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
2590
diff
changeset
|
47 |
|
2590 | 48 |
" |
2574 | 49 |
! ! |
50 |
||
3505
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
51 |
!BackgroundJob methodsFor:'processing'! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
52 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
53 |
process |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
54 |
"Actually perform the job. This method is called from the background worker thread" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
55 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
56 |
self process:job |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
57 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
58 |
"Created: / 21-02-2015 / 10:14:04 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
59 |
! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
60 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
61 |
process: aBlock |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
62 |
aBlock value |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
63 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
64 |
"Created: / 21-02-2015 / 10:19:09 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
65 |
! ! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
66 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
67 |
!BackgroundJob methodsFor:'start & stop'! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
68 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
69 |
restart: aBlock |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
70 |
"Restart the job, evaluationg aBlock instead of pre-configured job" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
71 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
72 |
running ifTrue:[ |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
73 |
self stop. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
74 |
]. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
75 |
self start: aBlock |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
76 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
77 |
"Created: / 21-02-2015 / 10:16:39 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
78 |
! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
79 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
80 |
start: aBlock |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
81 |
"Start the job, evaluating aBlock instead of pre-configured `job`." |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
82 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
83 |
self start: aBlock withPriority: priority |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
84 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
85 |
"Created: / 21-02-2015 / 10:17:34 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
86 |
! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
87 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
88 |
start: block withPriority: prio |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
89 |
| t | |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
90 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
91 |
((t := thread) isNil or:[t isDead]) ifTrue:[ |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
92 |
thread := [ |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
93 |
[ |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
94 |
running := true. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
95 |
self process: block. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
96 |
] ensure: [ |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
97 |
running := false. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
98 |
thread := nil |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
99 |
] |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
100 |
] newProcess. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
101 |
self setupThread: thread priority: prio. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
102 |
thread resume. |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
103 |
] |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
104 |
|
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
105 |
"Created: / 21-02-2015 / 10:18:47 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
106 |
! ! |
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
107 |
|
2574 | 108 |
!BackgroundJob class methodsFor:'documentation'! |
109 |
||
2590 | 110 |
version |
3505
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
111 |
^ '$Header: /cvs/stx/stx/libbasic2/BackgroundJob.st,v 1.15 2015-02-21 22:42:34 vrany Exp $' |
2590 | 112 |
! |
113 |
||
2574 | 114 |
version_CVS |
3505
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
115 |
^ '$Header: /cvs/stx/stx/libbasic2/BackgroundJob.st,v 1.15 2015-02-21 22:42:34 vrany Exp $' |
2574 | 116 |
! |
117 |
||
118 |
version_SVN |
|
3505
148aeaa05f75
Added new API to BackgroundJob: allow to pass down a block to evaluate as background job
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
3493
diff
changeset
|
119 |
^ '$Id: BackgroundJob.st,v 1.15 2015-02-21 22:42:34 vrany Exp $' |
2574 | 120 |
! ! |
2976
e1da8a03d161
use #creator instead of #signal
Claus Gittinger <cg@exept.de>
parents:
2736
diff
changeset
|
121 |