← Архив: Common Lisp

Как посмотреть список всех открытых потоков?

Author: · 21.06.2013 15:46
· original author: dima0905
И особенно те, что открывает hunchentoot
· original author: archimag
slime-list-threads показывает список потоков. По названию легко определишь те, что создал hunchentoot.
Другой способ:
(bordeaux-threads:all-threads)
· original author: dima0905
Я неправильно спросил, мне нужны потоки ввода-вывода , stream, который. До многопоточности я еще не дорос.
· original author: dima0905
Посмотрел список, ничего мне это знание не дало.
· original author: archimag
> Я неправильно спросил, мне нужны потоки ввода-вывода , stream, который. 
Хм, а что ты будешь с ними делать? 
Ну можно, наверное, перебрать все объекты и найти там streams, но зачем?
· original author: dima0905
Не очень понимаю, как через *standard-output*в функции, вызванной через (hunchentoot:create-prefix-dispatcher выводится в браузер, а как в *slime-repl sbcl*
· original author: archimag
Для этого тебе надо разобраться не с потоками, а со специальными переменными, у нас есть хорошая статья:  Переменные в Common Lisp.
· original author: dima0905
#<SYNONYM-STREAM :SYMBOL SB-SYS:*STDOUT* {10001ED533}>
#<SYNONYM-STREAM :SYMBOL SB-SYS:*STDIN* {10001C44A3}>
куда ведут?
· original author: archimag
> куда ведут?
Куда угодно. Зависит от окружения, которое можно изменить с помощью let.
· original author: dima0905
Не соображу как передавать данные из браузера в функцию в произвольном месте (через read) и обратно. Что бы функция ждала эти данные. Примерно, как диалоговый ввод-вывод на терминал.
· original author: archimag
Никак.
· original author: dima0905
Ну в *slime-repl sbcl* выводятся. Кликаю мышкой в браузере и в *slime-repl  выводятся данные. Может можно их прочитать из программы?
· original author: archimag
> Кликаю мышкой в браузере и в *slime-repl  выводятся данные.
А что у тебя там запущенно? Для начала предлагаю разобраться с HTTP.
· original author: dima0905
;;;
;;; Здесь рисуем кнопочки
;;;
(defun button ()
  (with-html-output (*standard-output*)
    (:div :id "botton" :class "btn"
 :onclick "$.ajax ({type: \"GET\", url: \"/myweb/capture\", data: \"game-choice=ПОВТОР\", dataType: \"HTML\"})"
 :style "position: absolute; top: 102px; left: 0px; z-index: 55; height: 18px; width: 110px; visibility: visible;" "ПОВТОР")
    (:div :id "botton" :class "btn"
 :onclick "$.ajax ({type: \"GET\", url: \"/myweb/capture\", data: \"game-choice=НОВАЯ\", dataType: \"HTML\"})"
 :style "position: absolute; top: 130px; left: 0px; z-index: 55; height: 18px; width: 110px; visibility: visible;" "НОВАЯ")))
;;;
;;; Здесь обрабатываем "click"
;;;
(defun read-param ()
  (pprint (get-parameter "game-choice") cl-user:*alt-stream*))
pprint выводит repl. А я думал, что можно где-то "подвесить" read , который бы эти данные ждал и получал. 
· original author: archimag
Таки предлагаю для начала прочитать хотя бы краткое описание HTTP.