Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Пн окт 22, 2018 1:03 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 378 сообщений ]  На страницу Пред. 13 4 5 6 726 След.
Автор Сообщение
СообщениеДобавлено: Вт окт 13, 2009 7:03 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Вопрос возник. В многопоточном приложении библиотеку (не только эту, а вообще любую) надо загружать для каждого потока, или единожды для всего приложения, и пользовать ее во всех потоках?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 9:06 am 
Не в сети
Mentor
Аватара пользователя

Зарегистрирован: Вт янв 15, 2008 11:27 am
Сообщения: 752
в теории потоки используют единое адресное пространство, поэтому загружать библиотеку стоит один раз, и очень желательно до создания потоков. но это в теории. как на практике - надо ещё проверить (сомнения у меня вызывает запись в глобальные переменные, которые могут находиться в библиотеках).


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 9:17 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Для порожденного потока доступны адресное пространство родителя.
Однако многие библиотеки не реентерабельны [url]http://ru.wikipedia.org/wiki/Реентерабельность[/url]

Бибилотека box_lib.obj на 99% реентерабельна.


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 9:44 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Спасибо большое за разъяснения) а оставшийся процент нереентерабельности к каким негативным последствиям может привести, и как их можно избежать?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 9:53 am 
Gluk
На самом деле все зависит от того как библиотека написана, если повторная входимость учитывалась при написании, то проблем с вызовом не должно быть.
Для Box_lib все комопненты реентерабельны на 100%, кроме editbox. Который в ближайшее время надеюсь тоже будет пофиксен.


Последний раз редактировалось Mario Вт окт 13, 2009 9:54 am, всего редактировалось 1 раз.

Вернуться к началу
   
СообщениеДобавлено: Вт окт 13, 2009 9:54 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Сегодня либа будет польностью реентерабельна. Я внесу необходымые изменения.


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 3:57 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн апр 16, 2007 6:38 pm
Сообщения: 1222
Спасибо, это будет очень кстати =)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Вернуться к началу
СообщениеДобавлено: Вт окт 13, 2009 9:40 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Изменения:
Итак изменилась структура компонента edit_box. Добавилась в структуру ссылка на переменную mouse_dd название этой переменной может быть любое. Но нужно соблюдать правило. Для потока с любым кол-во компонентов edit_box должна использоваться эта переменная. Для другого потока, даже порожденного должна быть предусмотрена своя такая переменная. В этой переменной храниться id бокса в котором произошло выделение. Если даже будет использоваться 1 переменная на 2 потока, это не приведет к крушению программы. Может потерятся выделение в компоненте. Однако рекомендую соблюдать правило - для каждого потока своя такая переменная.

Необходимо внести изменения в каждую программу. Иначе работает не корректно. Примеры находиться на svn.


Вернуться к началу
СообщениеДобавлено: Чт окт 15, 2009 12:44 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
В ревизии 1214 в box_lib вкралась ошибка. Во всех программах, использующих EditBox, при попытке редактировать текст программы вылетают.

_________________
KolibriOS-перспективная ос!
Kolibri is best operation system in the world!


Вернуться к началу
СообщениеДобавлено: Чт окт 15, 2009 1:13 pm 
andrew_programmer
В каких "во всех"? Например, я для zSea переделал согласно описанию измнения (более подробно в примерах на SVN)
<Lrz> писал(а):
Добавилась в структуру ссылка на переменную mouse_dd название этой переменной может быть любое.

Переменная вставлена приблизительно посередине, соответственно структура следующих данных сдвинулась на 4 байта за счет переменной. Соответственно использующие приложения надо править (если уже не правлено) и перекомпилять.


Вернуться к началу
   
СообщениеДобавлено: Чт окт 15, 2009 1:34 pm 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
ed_struc_size=76
struc edit_box width,left,top,color,shift_color,focus_border_color,\
blur_border_color,text_color,max,text,mouse_variable,flags,size,pos

....
mouse_variable dd ?

Все ассемблерные программы я переписал. Глючат программы написанные на C.


Вернуться к началу
СообщениеДобавлено: Чт окт 15, 2009 9:55 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Чт май 19, 2005 4:43 pm
Сообщения: 896
Я брал последнюю ночную сборку. Тестировал в ней свои программы. Потом мне понадобилось сохранить RAM Disk. Так как диск у меня не /hd0/, а /hd2/, то я стал править путь и программа RDSAVE вылетела. Потом попробовал EditBox в HTMLV - тоже самое. И для Screenshoot тоже самое. В общем везде, где используется EditBox происходит вылет при редактировании.

_________________
KolibriOS-перспективная ос!

Kolibri is best operation system in the world!


Вернуться к началу
СообщениеДобавлено: Пт окт 16, 2009 4:19 am 
Не в сети
Kernel Optimizer
Аватара пользователя

Зарегистрирован: Пн янв 16, 2006 7:58 pm
Сообщения: 657
Я нашел этот баг и я его пофиксел. Я надеюсь у тебя не будет проблем с моим компонентом.
---------
I found this bug and I fix it. I hope you will have no problems with my component.


Вернуться к началу
СообщениеДобавлено: Сб окт 17, 2009 10:54 pm 
Исходники компонента для выбора файла OpenDialog залиты на SVN ревизия 1219. Лицензия подобна лицензии BSD. По сути это отдельная программа, которая запускается с передачей параметра - указатель на именованную область, предварительно выделенную функцией 68.22. Большая часть обслуживающего кода, подключаемого к инициирующей программе, расположена в макросе opendial.mac. В принципе подключение к программам написанным на ассемблере будет несложным, насчет других языков ничего не могу сказать, возможно придется написать код подобный содержащемуся в макросе.

Исходники элемента управления FileBrowser и доработанного MenuBar (активация клавиатурой) были залиты еще раньше.

Поскольку OpenDialog использует иконки в формате PNG (в принципе можно и другие форматы, но нужно подключать код ответственный за распаковку изображения в RAW), то в ближайшее время в теме Проект: Полноценный графический просмотрщик будут выложены исходники 4-х модулей распаковки изображений, под лицензией подобной лицензии BSD.

З.Ы. По всем вопросам связанным с применением кода постараюсь ответить и помочь с внедрением OpenDialog, если найдутся желающие этим заниматься, однако на вопросы в стиле "докопайся до столба" отвечать не хочу, так что просьба к "шибко грамотным" таких вопросов не задавать.


Вернуться к началу
   
СообщениеДобавлено: Пт окт 23, 2009 12:34 am 
SVN ревизия 1227 - убраны лишние перерисовки при обработке события мыши для компонента OptionBox.


Вернуться к началу
   
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 378 сообщений ]  На страницу Пред. 13 4 5 6 726 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB