From: Ng P. S. <ng...@ne...> - 2003-01-02 01:48:20
|
On Wed, Jan 01, 2003 at 12:09:15PM -0500, John K. Hinsdale wrote: > > The mod_lisp website has example code for CLISP by Rachel Richard and > > Nils Kassube. Isn't that what you want? > > no, if you look at that code, it ignores the case where you want > concurrency. Well, look at more than the CLISP example: mod-lisp.lisp (LispWorks, it seems): (defun make-apache-instream (handle) (mp:process-run-function (format nil "apache socket ~d" handle) '() 'apache-listen (make-instance 'comm:socket-stream :socket handle :direction :io :element-type 'base-char))) modlisp-cmucl.lisp: [...] (let ((stream (sys:make-fd-stream new-fd :input t :output t))) (mp:make-process #'(lambda () (apache-listen stream)))))) [...] modlisp-clisp.lisp: A bit more stuff to quote, so I won't. Invokes 'apache-listen eventually. And, finally, clisp-2.30/src/threads.lisp: ;; multithreading for CLISP (defpackage "THREADS" (:nicknames "MT") (:use "COMMON-LISP" "EXT") (:export "MAKE-THREAD" "THREAD-WAIT" "THREAD-WAIT-WITH-TIMEOUT" "WITHOUT-INTERRUPTS" "THREAD-YIELD" "THREAD-KILL" "THREAD-INTERRUPT" "THREAD-RESTART" "THREADP" "THREAD-NAME" "THREAD-ACTIVE-P" "THREAD-STATE" "CURRENT-THREAD" "LIST-THREADS" "MAKE-LOCK" "THREAD-LOCK" "THREAD-UNLOCK" "WITH-LOCK" "Y-OR-N-P-TIMEOUT" "WITH-TIMEOUT")) So perhaps you just need to do something like: blah blah (mt:make-thread blah-blah 'apache-listen blah-blah) blah blah Let us know how it goes. Cheers. -- Ng Pheng Siong <ng...@ne...> * http://www.netmemetic.com |