Анонс: я таки сделал многопоточность в VB

Модератор: Хакер

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 03.11.2011 (Чт) 20:39

arthur2 писал(а):Кстати, а как будет работать отладка и будет ли?
У других я не знаю, но если кирпич делает Хакер, то все будет тип-топ ;)
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 12.11.2011 (Сб) 21:13

Разведанные функции на текущий момент:
re_functions_03_on_13_11_2011.png


P.S. <=== 6 лет, как я на форуме :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 12.11.2011 (Сб) 22:05

Хакер писал(а):P.S. <=== 6 лет, как я на форуме

Поздравляю!
Бороться и искать, найти и перепрятать

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 15.11.2011 (Вт) 13:53

Хакер писал(а):Разведанные функции на текущий момент:

Помнится я сильно удивился, когда прочитал, про PutMem и GetMem, и подумал, надо же сколько неизведанного скрывается в недрах VB и PutMem с GetMem это наверное только начало. Теперь можно сказать, что PutMem и GetMem отдыхают. Правда все найденное Хакером, для большинства и для меня в т.ч. практической пользы не представляет, ибо я например не знаю что с этим делать. Но это на текущий момент, а вообще интересно разобраться, хоть с небольшой частью всего этого. Т.е. не просто знать для чего это (часть я уже знаю), а именно применять на практике. Тогда наверное смело можно будет сказать я ПРОФИ! :)
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 15.11.2011 (Вт) 18:03

Эти функции не для VB-программистов. Это внутренние неэкспортируемые версия-зависемые функции.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1598
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Анонс: я таки сделал многопоточность в VB

Сообщение arthur2 » 26.11.2011 (Сб) 8:24

Ну как там продвигается? Есть новости? :)
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 26.11.2011 (Сб) 8:28

Очень хорошо продвигается. Работает как в самых старых версиях ОС, так и в самых новых.
Как в P-коде, так и в Native-коде.
Как со самой старой версией рантайма, так и с самой новой.

Могу в личку скинуть бета-версию.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1598
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Анонс: я таки сделал многопоточность в VB

Сообщение arthur2 » 26.11.2011 (Сб) 19:41

Давай!
Артур
 
   

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3977
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Анонс: я таки сделал многопоточность в VB

Сообщение BV » 18.01.2012 (Ср) 17:22

Хакер, возможно, тебя заинтересует:
coder на Исходниках разрабатывает многофункциональный аддон VBStyleCode: http://forum.sources.ru/index.php?showtopic=184418
Среди прочего, аддон занимается разбором кода. В общем, то, о чем я писал выше, ты мог бы перенести в этот аддон, объединившись с автором
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++)??<cout<<static_cast<char>((out??(i??)??'89));??>cout<<endl;


Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 18.01.2012 (Ср) 17:29

Мне очень не нравится его эддон, я бы советовал ему делать его только ради себя и ни с кем не делиться :|
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3977
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Re: Анонс: я таки сделал многопоточность в VB

Сообщение BV » 18.01.2012 (Ср) 18:13

Думаю, ему интересно будет узнать твое мнение, подкрепленное конкретикой
char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++)??<cout<<static_cast<char>((out??(i??)??'89));??>cout<<endl;


Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 18.01.2012 (Ср) 19:41

Хм, судя по аватаре coder-а, это не автор того плагина, о котором я подумал и о котором отозвался.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

grunger
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 01.06.2002 (Сб) 17:25
Откуда: Нью-Йорк

Re: Анонс: я таки сделал многопоточность в VB

Сообщение grunger » 13.09.2012 (Чт) 19:32

а скажите, пж-ста, закончилось сие чем-нибудь? а то я аж сон потерял!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 14.09.2012 (Пт) 3:35

grunger писал(а):а скажите, пж-ста, закончилось сие чем-нибудь? а то я аж сон потерял!

Процент готовности = 90 %. С апреля не написано не единой строчки кода.
Если бы работа оплачивалась... а так.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

grunger
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 01.06.2002 (Сб) 17:25
Откуда: Нью-Йорк

Re: Анонс: я таки сделал многопоточность в VB

Сообщение grunger » 14.09.2012 (Пт) 18:53

мб kickstarter? я бы поучаствовал, если бы мог пользоваться *.bas в работе, т.е. если будет работать в Excel и проч. VBA.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 14.09.2012 (Пт) 21:37

grunger писал(а):мб kickstarter?
А что это такое?
grunger писал(а):т.е. если будет работать в Excel и проч. VBA
Ну скорее всего в VBA работать не будет. Т.к. кирпич будет работать исключительно с VB и VB'шным рантаймом msvbvm60. VBA этот рантайм вообще не использует, со всеми вытекающими последствиями.
Бороться и искать, найти и перепрятать

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4247
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Анонс: я таки сделал многопоточность в VB

Сообщение iGrok » 14.09.2012 (Пт) 22:59

ger_kar писал(а):А что это такое?

https://www.google.ru/search?q=kickstarter
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 15.09.2012 (Сб) 5:34

ger_kar писал(а):Ну скорее всего в VBA работать не будет. Т.к. кирпич будет работать исключительно с VB и VB'шным рантаймом msvbvm60. VBA этот рантайм вообще не использует, со всеми вытекающими последствиями.

У VBA свой рантайм. Такой же.

grunger писал(а):мб kickstarter? я бы поучаствовал, если бы мог пользоваться *.bas в работе, т.е. если будет работать в Excel и проч. VBA.

Судя по всему, никому, кроме человек пяти это не нужно. Из них пожертвовать деньги готовы человек два. Я же открыл кошельки для пожертвований. В первую неделю прислали около 500 рублей. И всё, больше никто ничего не слал.

В VBA многопоточность достижима с тем же успехом, что и в VB (поскольку оба продукта скомпилированы из одних и тех же исходников, только с разными ключами). Но первоначально многопоточность планируется только в VB.

Другая проблема состоит в том, что проект может не оправдать надежд многих людей. И это самый интересный момент, потому что он чисто субъективный. Потому что кирпич будет работать идеально. Просто многопоточность сама по себе сложна. Суровые сишники, пишущие многопоточные приложения, бывают, чуть-чуть тупанут где-то, и потом получают катастрофически непонятные раз-на-раз проявляющиеся глюки. С идеологией же разработки многопоточного кода на VB вообще никто не знаком. Что можно, а что нельзя — никто не знает. Я, вот, знаю, но даже у меня нет навыка написания именно на VB таких приложений, поэтому первое время даже я буду спотыкаться на своих же правилах.

Инструменты не дают всесильность. Люди получат в своё распоряжение кирпич, а дальше два варианта.
Они пишут код, и он у них намертво виснет. Люди кричат «кирпич дерьмо, ибо всё виснет». Но на деле люди просто словили deadlock, а кирпич идеален и не виноват.
Или они пишут код, а он у них падает с типичным предложением «Отправить отчёт». И они кричат: «кирпич — говно, ибо всё падает». Но на деле у них потоки словили «race of condition» и переполнили свои стеки от внезапно возникшей рекурсии.

Пока всё было в одном потоке, для использования ООП людям не приходилось знать о COM-апартаментах и их типах (STA, MTA, NTA). Они не знали правила обращения с объектами в многопоточной среде. В частности, не знали, что каждый объект принадлежит своему COM-апартаменту (в случае VB — речь идёт об STA-апартаментах, поэтому фраза «апартамент» может быть заменена на «поток» без искажения смысла). И что нельзя ссылку на объект из одного апартамента передавать в другой просто так. Передадут они — бымс, всё упало. А надо делать межаппартаментный маршаллинг ссылок на объекты. Другими словами, хотим из потока А передать ссылку на какой-то объект в поток Б: нужно в потоке А ссылку преобразовать в особую сущность, передать эту сущность потоку Б, а поток Б должен из этой сущности получить обратно объектную ссылку. Это всё не чёрная магия, а общеизвестные правила COM, но кто-нибудь из чисто-VB-программистов их когда-нибудь читал?

Дальше, некоторые не догадываются, что заимей они в потоке Б ссылку на объект из потока А, и сделай вызов метода у того объекта, поток Б перенаправит вызов в поток А и заснёт до тех пор, пока вызов не завершится. То есть многопоточная программа превращается в обычную однопоточную на время вызова. Это просто благоприятнейшее поле для дедлоков. Поток Б вызывает какой-то метод объекта, принадлежащего потоку А. Поток Б засыпает и ждёт завершения работы метода в рамках потока А. А метод в рамках потока А ждёт какого-то результата, который по мнению потока А в это время должен сделать поток Б. Но поток Б-то спит.

В общем, тут надо будет думать. Сколько раз я в различных топиках отвечал: «кривая архитектура», «безумно кривая архитектура»? Люди, как я смотрю, и в однопоточной среде умудряются придумывать адовую дребедень. А здесь думать придётся ещё больше.

И кстати, накосячили люди и сообщают, что всё у них упало или зависло. Допустим, по их вине. Но я то тоже при таких сообщениях буду дёргаться. А в друг это тот случай, когда всё упало и зависло по моей вине? Это значит, на каждое сообщение о проблемах мне надобно отреагировать. В принципе, нормальная практика: разработчик реагирует на проблему, связанную с продуктом. Только здесь тот случай, когда 99 % проблем будут вызваны криворукостью пользователей, но это не отменяет 1 % проблем, вызванных моей кривобокостью :)

Может быть я сгущаю краски.
Может быть большинство будет запускать новый поток, делать в нём какие-то расчёте или вызывать InternetDownloadToFile, и на этом всё. Тогда всё будет у всех прекрасно, тут уж вроде негде выстрелить себе в ногу.

Как-то так.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 15.09.2012 (Сб) 20:20

Хакер писал(а):У VBA свой рантайм. Такой же.
Ну такой-же, да не такой. В работе он скорее похож на работу VB приложения в среде IDE. Т.е. все выполняется в одном потоке. По крайней мере кривовато сделанный компонент ActiveX где используется многопоточность, не работает в VB'шном приложении, но прекрасно работает с VBA, где все происходит в одном потоке.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 16.09.2012 (Вс) 5:55

ger_kar писал(а):Ну такой-же, да не такой. В работе он скорее похож на работу VB приложения в среде IDE.

Ну естественно. А при работе VB-прилояжения в среде IDE рантайм почти такой же, как и msvbvm60.dll. Все те же функции, скомпилированные из тех же исходников, только с другим ключом условной компиляции.

В частности, в обоих рантаймах есть функция rtcStop. В одном она завершает приложение, в другом передаёт управление в IDE.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 16.09.2012 (Вс) 6:16

А в плане многопоточности тоже ведь разница есть, почему под IDE все в одном потоке работает?
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 16.09.2012 (Вс) 6:17

ger_kar писал(а):А в плане многопоточности тоже ведь разница есть, почему под IDE все в одном потоке работает?

Что именно под IDE всё в одном потоке работает?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 16.09.2012 (Вс) 11:46

Ну например ActiveX под IDE всегда работает в одном потоке.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 16.09.2012 (Вс) 15:24

ActiveX-что?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 16.09.2012 (Вс) 15:32

По теме: заболел. Лежу в постели с ноутом, доделываю кирпич. Учитывая, что в последний раз я работал над ним в апреле, самая актуальная проблема: вспомнить, на чём я остановился.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1657
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Debugger » 16.09.2012 (Вс) 16:46

Скорее выздоравливай!
Программист - это локальный бог (С) Я

ger_kar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1876
Зарегистрирован: 19.05.2011 (Чт) 19:23
Откуда: Кыргызстан, Иссык-Куль, г. Каракол

Re: Анонс: я таки сделал многопоточность в VB

Сообщение ger_kar » 16.09.2012 (Вс) 16:54

Хакер писал(а):ActiveX-что?
Ну вообще я имел ввиду многопоточность созданную посредством ActiveX (exe или dll). Так вот если создавать многопоточность таким образом, то в среде IDE все равно будет один поток как ни крути.
Бороться и искать, найти и перепрятать

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16079
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Хакер » 16.09.2012 (Вс) 16:58

Debugger писал(а):Скорее выздоравливай!

Спасибо. Это не в ваших интересах, тем не менее :)

ger_kar писал(а):Ну вообще я имел ввиду многопоточность созданную посредством ActiveX (exe или dll). Так вот если создавать многопоточность таким образом, то в среде IDE все равно будет один поток как ни крути.

Надо полагать, из тех соображений, что отлаживать многопоточный код рядовые VB-программисты испугались бы. Пришлось бы делать WatchWindow для каждого потока. И как-то давать программисту выбор потока, execution-flow которого отображается.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Sam777e
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 153
Зарегистрирован: 16.09.2010 (Чт) 4:33

Re: Анонс: я таки сделал многопоточность в VB

Сообщение Sam777e » 16.09.2012 (Вс) 21:50

Побоку все интересы - главное, чтобы знающий и хороший человек был здоров.
Здоровья и удачи

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2751
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 16.09.2012 (Вс) 22:19

Выздоравливай :)

Пред.След.

Вернуться в Мой блог

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

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

    TopList