Выхлоп демонстратораrexy_craxyApril 16 2010, 20:42:16 UTC
>>> Just created comm is: (IPC nil nil nil nil) >>> Init'ed comm is: (IPC 3886 3342350 3375119 -1208672256) >>> Parent's pid is: 3885 >>> asking my child for it's PID... --- CHILD RETURNS --- 3886
Т.е. тут все правильно: что больше сдвинуто, то глубже вложено. Структура лесополосы не нарушена :) Правда, раскрашивалка немного пожевала абсолютные величины отступов, но это же не мешает.
Чую, никто не просек фишку, надо дать пару пояснений.
1. Потомку на вычисление передается НЕ строка, а родное липовсоке s-expression. Т.е. потомок делает не read-eval, а только eval. Определены ли при этом символы из передаваемого s-expr в родителе -- совершенно не важно. Запустив потомка до того, как родитель понавыращивал в своем адресном пространстве кубометры данных, получаем компактный вычислитель в сопроцессе.
2. Явный fork и семафоры использованы из хулиганства. Newlisp имеет более высокоуровневый механизм в стиле Cilk (spawn, send/receive & Co).
Comments 18
>>> Just created comm is: (IPC nil nil nil nil)
>>> Init'ed comm is: (IPC 3886 3342350 3375119 -1208672256)
>>> Parent's pid is: 3885
>>> asking my child for it's PID...
--- CHILD RETURNS ---
3886
>>> calculating (1 + 1) ...
--- CHILD RETURNS ---
2
>>> defining a function in child...
--- CHILD RETURNS ---
(lambda () (println "I'm (f) in context " (context)))
>>> calling the function in child...
I'm (f) in context MAIN
--- CHILD RETURNS ---
MAIN
>>> calling an undefined function...
!!! ERROR IN CHILD !!!
ERR: invalid function : (MAIN:wtf?)
called from user defined function nil
>>> but the child process is still at my service...
I'm (f) in context MAIN
--- CHILD RETURNS ---
MAIN
>>> deactivating the IPC...
>>> look at that IPC instance again: (IPC nil nil nil nil)
>>> That's all, folks. Bye.
Reply
Reply
Reply
Reply
Reply
1. Потомку на вычисление передается НЕ строка, а родное липовсоке s-expression. Т.е. потомок делает не read-eval, а только eval. Определены ли при этом символы из передаваемого s-expr в родителе -- совершенно не важно. Запустив потомка до того, как родитель понавыращивал в своем адресном пространстве кубометры данных, получаем компактный вычислитель в сопроцессе.
2. Явный fork и семафоры использованы из хулиганства. Newlisp имеет более высокоуровневый механизм в стиле Cilk (spawn, send/receive & Co).
Reply
За пояснения --- огромное человеческое спасибо.
Reply
Reply
Reply
за то что дал разъяснения - спасибо.
скажи - как разрешалась проблема со свичами??
Reply
Reply
Reply
Reply
Leave a comment