Home
Objective Caml
ocaml@conference.jabber.ru
Среда, 2 ноября 2011< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | http://camlunity.ru/ (теперь с git доступом!) | Верблюды грязи не боятся! | release crap, enjoy NIH | репортьте баги официальным дилерам | ocaml мёртв и тормозит, move on | stdlib only? - ССЗБ
Конфигурация комнаты
Участники комнаты

GMT+3
[00:35:03] ygrek вышел(а) из комнаты
[00:39:44] Typhon вошёл(а) в комнату
[07:43:35] Typhon вышел(а) из комнаты
[08:52:20] Typhon вошёл(а) в комнату
[09:04:18] gds вошёл(а) в комнату
[10:40:46] ygrek вошёл(а) в комнату
[10:43:50] ermine вошёл(а) в комнату
[12:12:57] <f[x]> Kakadu: я надеюсь ты ж не собираешься всерьёз оставлять -O5 как фикс?
[12:29:40] ygrek вышел(а) из комнаты
[12:39:17] shaggie вошёл(а) в комнату
[13:34:39] bobry вошёл(а) в комнату
[14:00:31] Kakadu вошёл(а) в комнату
[14:01:44] <Kakadu> f[x]: люди которые пишут eiskaltdc++ так и оставили
[14:07:13] <f[x]> ы, т.е. это такая багав qt?
[14:07:16] <f[x]> а зарепортили?
[14:10:22] <Kakadu> я не репортил
[14:12:21] <Kakadu> что-то после двух пар филососфии мне плохо ТТ
[14:24:03] <gds> как отследить завершение/убиение треда и что-то сделать (подчистить, например, что-нибудь)?
[14:43:24] <f[x]> gds: ну вообще есть pthread_atexit, а по-хорошему - with-xxx в помощь
[14:44:07] <f[x]> но если тебе это нужно, то проблема скорее всего в другом месте, либо ты делаешь что-то жутко низкоуровневое
[14:47:43] <gds> f[x]: да, вероятно, проблема в другом месте.  Мне нужно иметь, в конце концов, такой массив, который имел бы разные данные в разных тредах.  Точнее, оказалось, не массив, а нечто, выдающее наружу функции
set : ... -> int -> option 'a -> unit
get : ... -> int -> option 'a
, где int -- индекс массива.  (в частном случае -- он меньше 2), и где "set ... n opt_x" влияет только на "get ... n" текущего треда.
[14:54:31] <f[x]> сделай этому массиву create и close
[14:54:47] <f[x]> create возвращает в зависимости от Thread.id либо новый либо готовый
[14:54:53] <f[x]> ну не create, а get
[14:55:01] <f[x]> close соответственно закрывает
[14:55:21] <f[x]> т.е. семантика как у любого вненего ресурса - клиент отвечает за осовобождение ресурса
[14:55:35] <f[x]> ну не get, а access
[14:55:42] <f[x]> чтобы не пересекалось с get/set
[14:56:39] <gds> если "либо готовый", то не получится, так как для гарантий нужно будет везде прибивать его -- кто его знает, когда тред завершится вообще.
[15:02:48] <f[x]> достаточно прибить в одном месте, если ты это делаешь на издыхании треда то все остальные референсы никуда не утекут
[15:03:03] <f[x]> на крайняк можно в get/set вкрутить проверку совпадения Thread.id
[15:09:12] bobry вышел(а) из комнаты
[15:11:25] <gds> проблема в том, что таких массивов много и у меня нет централизованного контроля над ними.  (разве что при создании пихать unit->unit функцию для их прибития...)
[15:17:16] <gds> кстати вот, в идеале бы ещё следить за убиением треда.  with- этого не даст.  pthread_atexit может и даст, но это и сишечька, и гемор с vmthreads.
[15:17:47] <f[x]> кому нужны vmthreads?
[15:17:59] <f[x]> убивать треды это не просто плохо, это очень плохо
[15:18:39] <f[x]> именно потому что куча типов ресурсов это не поддерживает, например локи
[15:26:07] <gds> это да.  Но, думал, что у суровых сишников это практикуется.
vmthreads -- уже мало кому, факт.
[15:27:41] <f[x]> пусть такие суровые сишники сами лижут сковородки в аду, не надо под них подстраиваться
[15:28:24] <f[x]> либо твой тред умеет выходить по сигналу (булевый флажок, condition, eventfd, whatever) либо ты ссзб
[15:33:21] <gds> понял идею.
В общем, в том числе для гибкости, надо делать что-то типа
type withres 'a 'r = { construct : 'a -> 'r ; finalize : 'r -> unit }
, только такое, чтобы прибивало все созданные и ещё не прибитые объекты при выходе из вычисления какого-либо выражения.
[17:21:34] letrec вошёл(а) в комнату
[18:16:51] ygrek вошёл(а) в комнату
[18:20:35] <Kakadu> собственно я вчера доигрался до очередного креша и пошел спать
[18:21:05] <Kakadu> gds телепатически догадался, что если тупо вызвать aa#keyPressEvent из камла без наследования всё плохо
[18:21:11] <Kakadu> сегфолтится сволочь
[18:21:22] <Kakadu> итак, я где-то налажал с кастами
[18:23:17] <gds> Kakadu: ага.  Вывод: попробуй убрать вообще все касты, и будем разбираться, где они нужны, а где нет.
[18:23:26] <gds> ибо у тебя там их -- хоть попой кушай, и я за них не уверен.
[18:23:43] <gds> а хочется использовать lablqt там, где важна надёжность.  Если надёжности не будет -- не смогу.
[18:26:10] letrec вышел(а) из комнаты
[18:29:58] <gds> вообще, непонятно, нафига столько кастов было.  Одну их часть нужно было выделить в функции/макросы типа QTObject_of_value и Make_value_of_QTObject.  Какие ещё касты бывают?
[18:31:42] <Kakadu> чисто с эстетической точки зрения?
[18:33:37] <gds> чисто с практической.  каст -- это же операция, имеющая свою семантику.  которая, как лично мне очевидно, часто ведёт к рантайм-ошибкам.  на практике этот мой тезис мы проверили тоже, если чо.  и вот, хочется как-то избежать подобного в биндингах к qt.
[18:47:15] <ygrek> тем паче если плюсы то юзать надо плюсовые касты, по возможности
[18:48:01] <gds> да вообще, касты должны быть выделены строго в одно место на каждый случай использования.  (в будущем часть из этих "одних мест" будет в кодогенерилке.)
[18:58:10] letrec вошёл(а) в комнату
[18:59:56] <letrec> что-то капча опять появилась
[19:00:09] <letrec> можно её как-то опять убрать?
[19:01:03] <ygrek> jid поменял?
[19:01:47] <ygrek> fixe
[19:01:48] <ygrek> d
[19:01:58] <letrec> спасибо
[19:02:10] <letrec> систему переставил
[19:02:33] <letrec> вроде jabber account тот-же
[19:19:23] letrec вышел(а) из комнаты
[19:19:37] letrec вошёл(а) в комнату
[19:29:05] gds вышел(а) из комнаты: Replaced by new connection
[19:29:06] gds вошёл(а) в комнату
[19:55:53] Typhon вышел(а) из комнаты
[20:20:52] letrec вышел(а) из комнаты
[20:54:16] ermine вышел(а) из комнаты
[21:00:53] shaggie вышел(а) из комнаты
[21:28:14] Typhon вошёл(а) в комнату
[22:00:26] shaggie вошёл(а) в комнату
[22:00:33] <gds> в общем, у меня всё идёт к рантайм-интроспекции значений.  Неплохо будет, думается.
[23:30:32] АК вышел(а) из комнаты
[23:39:44] Kakadu вышел(а) из комнаты
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!