TaskIt: Handling Processes Nicely

S. Bragagnolo announced TaskIt.  Task IT is package that provides a cool way to deal with processes. Even when this version is stable, it still in design and we want to make it consistent and powerfull. It comes with a chapter in pharo enterprise book and some cool tests. 
We have moved the main distribution repo to CAR
http://smalltalkhub.com/#!/~CAR/TaskIT/
 
The main easy things to do with this revision are:

” closures “
val := [ 2+2 ] shootIt.
val isKindOf: TKTFuture.
val onSuccess: [: rslt | rslt == 4 ] “async”
val value == 4. ” sync “
rslt := [ 2+2 ] shootIt asResult.
rslt == 4 “sync on demand”
 
” objects “
 
val := 2 paralellize + 2.
val == 4 “sync on demand”
 
 
” staying in tune “
 
val := [ “some task” ] shootIt asStickyReference.
val := nil.
” sticky means that if this future is taken by the GC, it will kill the process”

” looping  “

val := server paralellize looping serveOnce: anyParameter asStickyReference.
“this will execute in a new process, in a loop, server serveOnce: anyParameter.”
 
You can stop it by doing
val:= nil.

“or using a disgusting magic variable, for that check the samples :). But do not rely on that kind of things, because it will not be supported “

For more advanced and cool usages, check the Doc.

 
FAQ:

1- Yes, the “sync” on demand is implemented with a proxy and a become.

2- Yes, we are changing the API of the processes that persist in time.

CREDITS
  All CAR team in general was great inspiration, particularly, Guille Polito full operational commiter and  of course is always a good idea to discuss with him,  Nick Papoylias, is also great to discuss with him. Luc, Noury, Jannik: several ideas are discussed with them as well, and they always gave me support.

and from RMOD Esteban Lorenzano, also discussing and proposing.

Thanks all :).
 OTHERS:
If you want to go to the darkside (dark because is not documented yet, but in the case of PoolIT, that it has some doc ) you can also add to your combo:
ActIT: a simple Actor extention for taskit.
ForkIT: an extention that runs blocks in background image (it adds a nice button to the test runner, letting you run all your tests in a background image and installing the results after the execution)
PoolIT: it adds a pool of workers, it consumes tasks and ensure you a limited amount of threads.
PlanIT: a basic and not yet full developed algebra for composing processes.

I encourage you to use it, it is being used in PhaROS since a lot  of time. And please any bug and enhancements, you can contact us. Since we are working on the next version is a good time to define what features are really needed.

Advertisements

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: