In general terms there are pharo processes.

val := [2+2] shooitIt.

val := [2+2] scheduleIt.

val := [2+2] forkIt.



All of this snippets will give you a future, all will be related with a
pharo process, but each process has different meaning. the firstone is a
common 2+2 block opened in a pharo process. the second one is a block
assigned to one of the  by-default two worker pharo processes from the
thread pool. ( in this case the pharo processes do not run directly the
task, but run a process that run tasks. Then, the first one is applied just
there, the second one when is its turn.

Finally the third one will use osprocess to open the same image (so, by
now, this will work without anyproblem if you have saved the image just
before, or if you didnt change any of the code to be executed)  with the
same vm and it will give the block to be executed. In our local image,
there will be spawned a watch pharo process that will check if the third
image has finished, and deploy the future for it.


In the behind the scenes, each of this convenient methods is implemented
with a different kind of runner and process reification.












2014-06-23 0:54 GMT+02:00 kilon alios <kilon.al...@gmail.com>:

> are those OS processes or Pharo processes ?
>
>
> On Mon, Jun 23, 2014 at 1:39 AM, Santiago Bragagnolo <
> santiagobragagn...@gmail.com> wrote:
>
>>
>> Hi all, im glad to announce TaskIT. You may already knew about, after all
>> it's not confidential ;) and it has documentation on-going since some
>> months ago.
>>
>> 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 counts 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.
>>
>>
>> Salut.
>>
>>
>> Santiago. .
>>
>>
>>
>>
>>
>>
>>
>

Reply via email to