Chakravarthi Muralidar <[EMAIL PROTECTED]> writes:
> Hello Everyone,
>
> Im trying to write a client server application under cmucl. I am using
> Linux 2.4.xx on x86 (also FreeBSD 4.9 under x86). The server side of the
> application listens on a particular port. when a connection is made it
> spawns off another listener and continues with the processing of the
> incomming data. Im getting stuck with the multiprocessing part which
> doesnt seem to work right at this point.
[...]
> The problem here is that if one connection starts writing data (and
> analyze-i is started since the stream has data)...i.e., analyze-i is
> reading the data and writing to disk..other processes has to wait till
> this one is complete why is that??
CMUCL threads (which it calls Processes) are cooperative. You'll need
to call MP:PROCESS-YIELD periodically if you want to give other
threads a chance to work.
[...]
> also how can one pass functional arguments to a function that is spawned
> by (mp:make-process )??
> i.e, lets say we have a function (test a b) how can we use
> (mp:make-process #'test) to take a and b)
I usually do, e.g.
(mp:make-process #'(lambda () (test a b)))
HTH,
cbb
--
11:48:38 up 28 days, 21:48, 1 user, load average: 0.43, 0.41, 0.26