I just pushed:

eb0b826776b60e0d97218242a5c285d146fb6f3b

https://git.enlightenment.org/core/efl.git/commit/?id=1bdd9e4dd15fc27da43b50fd29bfb1b0b30ef6bd

I wrote up a high level design document and description here for an idea of how
it works:

https://phab.enlightenment.org/w/efl-loops-threads/

I'm busy filling that document out a bit, but the core essentials are there.

There are some details like loop having an exit eina value vs task having a
simple int exit code (i'm sticking to this because it is what processes do,
it's simple and its universally supported between processes, unlike an eina
value). yes - it simplifies threads to only having int exit codes, but the
simplicity of the design is what I'm going for. threads like executeables have
full bytestream I/O for more complex data interchange. So there probably needs
to be a bit of adjusting here and there to remove duplication. The Arguments
event delivers arguments in an array, but the task object also stores arguments
too permanently. Do we need to double-up the information? So a few small things
like this.

I've given this design a lot of thought and what I have here I think is clean
and neat, tidy and fairly simple. It actually does work. I have tested it of
course. But please have a look and let me know what you think. Are there some
major defects in the design and idea? I know we can expand this in future with
more controls (I have no pause/resume controls in the task interface but there
should be. For processes use SIGSTOP/CONT and for threads a co-operative
request on the control line). The internals could be better. I use pipes and
this eats up a lot of FD's for the threads where I could use socketpairs
instead. I have a separate control pipe in/out from I/O in/out where i could
multiplex on the same socketpair. Currently we run out of FD's (after
about 240 threads running at once because they eat up 8 FD's per thread. The
Efl.Io code across the classes is a lot of copy & paste... And I don't have
anything to change priority of a thread once it has run (no eina API for this -
needs to be added).

I'm not that happy though with Efl.Io and the sheer amount of code needed to
deal with it. Even as a user of the API.

Anyway - comments, thoughts, etc. etc. ?

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
Carsten Haitzler - ras...@rasterman.com


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to