[Ruby] Tk.mainloop ест 99% cpu

Vladimir V. Zdorovenco halflife at moldova.cc
Fri Feb 7 15:16:37 MSK 2003


В письме от 7 Февраль 2003 14:48 Dmitry Morozhnikov написал:

> VVZ> Вот и съедает схожий цикл Tk.mainloop все сто, там нет задержек
> VVZ> он просто все время крутится проверяя что Tcl_DoOneEvent сделал.
> VVZ> Если ничего не сделал увеличивает свой счетчик на интервал
> VVZ> безделия если делает на другой, в конечном итоге если тот прев
> VVZ> ысит свою норму выставленную заранне, управление передается
> VVZ> другому треду.
>
> но теперь я не понимаю как от этой проблемы  можно  избавиться  со
> стороны расширения. то есть я вижу здесь три возможности:
>
> 1. использовать ruby-евский io-диспетчер  для  tk-шных  нужд.  там
> например есть такой rb_thread_wait_fd() на который можно  повесить
> X-совый сокет. кажется больше ведь для  событий  в  tk  источников
> нет? другое дело -- как  быть  с  виндой  и  маком?  там  ведь  не
> сокеты..

Ооппп, я и забыл о такой возможности.

> 2. глобальное. отказаться от зеленых ниток нафиг.
>
> 3. паллиатив. висеть на tk-шном  селекте  до  посинения  в  случае
> если ниток нет. vwait fake_variable так собстно и делает.

А я еще подумывал может в таких ситуациях следует создать отдельный, 
настоящий, не Ruby тред. Пусть се работает, сообщая Ruby о результатах :)

> VVZ>   Вот хороший вопрос, и код Poll по ссылке:
> VVZ> http://lists.ruby-support.org/lists/pipermail/ruby-developers/
> VVZ> 2002-October/000058.html
> VVZ> а вот хороший на него ответ:
> VVZ> http://lists.ruby-support.org/lists/pipermail/ruby-developers/
> VVZ> 2002-October/000059.html
>
> насколько я понимаю, проблема с SIGIO в  том  что  при  нескольких
> процессах на него завязанных -- фиг  различишь  к  чему  пришедший
> сигнал относится.

Проблема в том или ином к одному сводится. Свой механизм тредов удобен для 
Ruby программиста и в _некоторых случаях_ неудобен для того кто модули пишет. 

-- 
Всего хорошего,
	Владимир (e-mail: halflife at moldova doc cc)

Get your personal e-mail for FREE at http://www.moldovacc.com






More information about the Ruby mailing list