Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2010-10-12

KMRCLを眺める(212) MAKE-PROCESS

| 23:24 | KMRCLを眺める(212) MAKE-PROCESS - わだばLisperになる を含むブックマーク はてなブックマーク - KMRCLを眺める(212) MAKE-PROCESS - わだばLisperになる

console.lispも眺め終えたので、今回からKMRCLのprocesses.lispを眺めます。

processes.lisp処理系依存のマルチスレッド/プロセス系関数のラッパーを集めたもののようです。

ということで、今回は、make-processです。

定義は、

(defun make-process (name func)
  #+allegro (mp:process-run-function name func)
  #+cmu (mp:make-process func :name name)
  #+lispworks (mp:process-run-function name nil func)
  #+sb-thread (sb-thread:make-thread func :name name)
  #+openmcl (ccl:process-run-function name func)
  #-(or allegro cmu lispworks sb-thread openmcl) (funcall func)
  )

となっていますが、命名はどうやらCMUCLに合せた様子。

PROCESS-RUN-FUNCTIONという名前も多いようですが、CLでは処理系依存なものでも大体同じ名前とインターフェイスで提供されていることが多い気がします。

過去に同様の機能をLispマシン等が提供していた場合は、それを踏襲することも多いようです。

動作は、

(kl::make-process "hello" 
                  (lambda (&aux (*standard-output* #.*standard-output*))
                    (print "hello!")))
;→ "hello!" 
;⇒ #<SB-THREAD:THREAD "hello" FINISHED values: "hello!" {1011C39CC1}>

というところ。

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20101012