|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Выкладываю DLL, которая позволяет работать с многопоточностью на VB6. Эта DLL написана мной на VB6 и имеет экспортируемую функцию vbCreateThread , являющуюся аналогом CreateThread . В IDE многопоточность не будет работать, но запуск все равно возможен просто в том же потоке. Эта DLL является копией этого стандартного модуля (просто кто не любит подключать модули и библиотеки типов могут на этапе разработки юзать эту DLL) поэтому они взаимозаменяемы. По той же ссылке есть примеры например получение списка простых чисел в другом потоке и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 11:03 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
здорово, спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 11:14 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, круто! я весь твой блог прочитал от корки до корки, очень много новой и полезной информации ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 11:39 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Баян, велосипедист опоздал на 4 года. Здесь автор сделал многопоточность, не рушащую IDE: http://bbs.vbstreets.ru/viewtopic.php?f=54&t=43507 А учитывая то, что многопоточность можно сделать вообще без костылей (в ActiveX exe), ценность библиотеки ТСа стремится к нулю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 12:20 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariy, Где эта многопоточность? Покажи мне пример использовани этого кирпича. Я общался с автором и этот проект еще не готов, также этот кирпич не предполагает работу в IDE. Многопоточность в ActiveX EXE не будет работать без админских прав потому что требует регистрации. С помощью Reg-free это также нельзя обеспечить, потому что это работает только для in-proc серверов. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 12:58 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Я общался с автором и этот проект еще не готов, также этот кирпич не предполагает работу в IDE. Что-то мне казалось, что доделал. И где-то он писал, почему ide падает и как это обходить. ATM-TURBO 2Многопоточность в ActiveX EXE не будет работать без админских прав потому что требует регистрации.Админские права нужны лишь для регистрации. Лет 15 назад подобные решения, будучи вброшенными в англоязычный интернет, могли бы придать VB6 жизни или вообще изменить его судьбу, но поезд ушел, и сейчас они интересны лишь ностальгирующим фанатам. Фанатам слышать это неприятно, но это факт. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 13:48 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
AntonariyЧто-то мне казалось, что доделал Ну прежде чем писать что пост баян и я велосипедист сначала нужно убедится в этом. Такой многопоточности нигде нет, даже у Курлянда не инициализируется проект поэтому это не работает как следует. Можешь тут посмотреть если интересно (извиняюсь за свой английский) обсуждение многопоточности и примеры. Например тут очень активно используют VB6, также там собирается команда для написания компилятора. Также там огромное количество новых библиотек и новых примеров, контролов и т.п. AntonariyАдминские права нужны лишь для регистрации. Без регистрации EXE не запустится. Это раз, во-вторых как ты собрался работать с разделяемыми данными? Покажи пример, и давай сравним как это реализовано у меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 13:58 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2 Ну прежде чем писать что пост баян и я велосипедист сначала нужно убедится в этом. Ну да, тут я дал маху. ATM-TURBO 2также там собирается команда для написания компилятораКомпилятора vb6? Их бы энергию да в мирных целях :) Зачем они это делают, они как-то объясняют? ATM-TURBO 2 Без регистрации EXE не запустится.Можешь повторить это в третий раз еще более другими словами. Более известным этот факт мне не станет, а тебе возможно доставит удовольствие. ATM-TURBO 2 Это раз, во-вторых как ты собрался работать с разделяемыми данными? Покажи пример, и давай сравним как это реализовано у меня.Я не собираюсь заниматься этим мозгоклюйством на шестерке. VB6 в коме, его IDE убога, а электрошок к нему пусть применяют те, кому это интересно. Мне нет, я здесь просто делюсь багажом уже ненужных мне знаний. У меня у самого коллекция подобных кирпичей, которые я не использовал НИ РАЗУ, даже когда активно кодил на шестерке, потому что за рамками лабораторий они, как выяснилось, нафиг не нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 14:27 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторVB6 в коме, его IDE убога, а электрошок к нему пусть применяют те Уже через пару лет будет опенсоурсный, нативный VB7, инфа практически 100% ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 14:34 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторКомпилятора vb6? Их бы энергию да в мирных целях :) Зачем они это делают, они как-то объясняют? Потому, что нужна среда разработки нативных приложений для x86/x64. Сейчас в этом альтернативы C++ нет. Дельфи тоже практически помер. По плюсы многим неудобны, хочется простоту VB6 и нативный код и x64! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 14:40 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Зачем они это делают, они как-то объясняют? VB6 единственный в своем роде, он COM (ActiveX)-ориентированный и других таких нет и не будет. Они хотят воскресить VB6 также сделать его 64-разрядным. Добавить функционал рантайм и т.п. Один из разработчиков который занимается этим (написал кучу плагинов для VB к примеру vbRichClient) предлагал мне также вступить в команду разработчиков, я сказал что по возможности буду подключаться. Можешь повторить это в третий раз еще более другими словами. Более известным этот факт мне не станет, а тебе возможно доставит удовольствие. Просто это так звучало будто без регистрации все будет работать - "Админские права нужны лишь для регистрации.", т.е. для всего остального и для работы они не нужны? Поэтому я тебе расписал, может ты не знал этого. Откуда мне знать? Я не жадный на знания. Я не собираюсь заниматься этим мозгоклюйством на шестерке. VB6 в коме, его IDE убога, а электрошок к нему пусть применяют те, кому это интересно. Мне нет, я здесь просто делюсь багажом уже ненужных мне знаний. Ну тогда не стоит писать:А учитывая то, что многопоточность можно сделать вообще без костылей (в ActiveX exe), ценность библиотеки ТСа стремится к нулю. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 14:42 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторОни хотят воскресить VB6 также сделать его 64-разрядным. Поддерживаю давно пора запилить такой проект. Я например до сих пор зарабатываю на VB6 деньги, клиенты платят за различные утилиты которые я для них разрабатываю. При этом они ничем не уступают приложениям на С++, а о .NET вообще говорить не стоит. Тормознуто и тяжеловесно. На vb6 сложнейшее MDI приложение запускается за полсекунды, аналог на C# и WinForms будет грузится секунд 10-15 и отвратительно тормозить во время работы. Все таки качественный нативный код ничто не может превзойти! Для примера одна из моих коммерческих программ 2015 года на VB6. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:09 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Зачем они это делают, они как-то объясняют? VB6 единственный в своем роде, он COM (ActiveX)-ориентированный и других таких нет и не будет.Убедительно. ATM-TURBO 2Они хотят воскресить VB6 также сделать его 64-разрядным. Добавить функционал рантайм и т.п. Они хотят переписать рантайм и компилятор? А насчет IDE какие у них мысли? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:12 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
EoltДля примера одна из моих коммерческих программ 2015 года на VB6. Симпатишно. :) Верхнюю фигню (забыл как называется, из 2007 офиса расползлась) сам делал или готовая? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:16 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, Кстати, а что не так с разделяемыми данными в ActiveX exe? Я писал многопоточную прогу этим способом, и не помню никаких проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:20 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariy, Риббон это называется. Очень удобная штука когда к ней привыкаешь. С ней можно даже на виндовых планшетах пальцами работать. Я себе купил комплект компонентов от http://www.codejock.com, дороговато конечно, но если делать коммерческие проекты затраты быстро окупаются. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:20 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Вот еще пример, системная утилита для редактирования памяти RFID-тегов, я тут пытался реализовать черно-белый дизайн в стиле VS2012. А в центре многострадальный VB HEX-контрол, который на куче сайтов валяется в исходниках. В общем как среда разработки VB6 еще пока живой, на нем можно делать современные приложения с удобным GUI. Для меня важно, что в итоге получаются маленькие (по-сравнению с .NET) нативные приложения, с очень высокой скоростью работы и минимум потребляемой памяти. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:41 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
EoltА в центре многострадальный VB HEX-контрол, который на куче сайтов валяется в исходниках.Скролл-бары страшные, из стилистики выбиваются. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 15:46 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariy, Они хотят переписать рантайм и компилятор? А насчет IDE какие у них мысли? Планируют полностью переписать все. Но пока работают над компилятором. Читай. Кстати, а что не так с разделяемыми данными в ActiveX exe? Я писал многопоточную прогу этим способом, и не помню никаких проблем. Покажи как ты это делал. К примеру общий массив данных для работы. Вот тебе пример отрисовки фрактала Julia в другом потоке, массив разделяется между двумя потоками и один туда спокойно пишет другой читает без проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 16:55 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2 Планируют полностью переписать все.Передай им от меня ценный совет: пусть не делают IDE, лучше чем дотнетовкая все равно не сделают. В дотнетовскую IDE можно встроить ЛЮБОЙ язык, хоть BrainFuck, с поддержкой подсветки, интеллисенсом и прочими плюшками, о которых шестерка может только мечтать. Это будет в разы быстрее, чем пилить с нуля свой интерфейс. А сам рантайм и компилятор можно будет распространять через NuGet. Установил студию, ввел команду, все необходимое подкачалось из репозитария и запилилось в IDE - красота! Такой проект я бы поддержал. Хотя бы морально :) ATM-TURBO 2Покажи как ты это делал.Не могу показать, исходников не сохранилось, могу рассказать. Я просто добавлял ссылку на запущенный экземпляр в ROT, делал GetObject из экземпляра-потока и юзал публичную объектную модель. Таким образом как бы выходит, что данные фактически не являются разделяемыми, в них пишет и читает единственный основной поток (который в ROT), а прочие потоки лишь запрашивают/отдают ему данные. Я не уверен, что все происходит буквально так, как я описал, но ошибок, связанных с одновременным доступом к разделяемым данным, я ни разу не выхватывал. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:27 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Вот тебе пример отрисовки фрактала Julia в другом потокеНе пашет, ругается на TlsAlloc ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:31 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariy, Запускай EXE. Если хочешь сам скомпилировать то используй tlb по ссылке в первом посте. Также я немного ошибся в этом коде разделяется не массив а группа переменных. В ActiveX EXE такой функционал очень сложно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:33 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
В архиве нет exe. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:38 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2В ActiveX EXE такой функционал очень сложно сделать.Хорошо, что я этого не знал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:39 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Да вроде как раз Palette(99) и разделяется. А это что за ребус? Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:42 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
В архиве нет exe. Сорри. Приложил. Хорошо, что я этого не знал. В ActiveX EXE используется маршаллинг вызовов поэтому если один поток выполняет работу другой будет ждать. Это лишает смысл использования многопоточности. Поэтому я у тебя спросил покажи мне как у тебя взаимодействовали потоки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:44 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
А это что за ребус? Это для того чтобы избежать оптимизации компилятора, т.к. в опциях у меня стояла полная оптимизация. VB6 не предполагает что кто-то внутри может обратится к переменной Process . Если этого не сделать то компилятор увидит что внутри цикла переменная не изменяется и остается False поэтому он ее заменит на константу (сделает по сути бесконечный цикл) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 17:50 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Вспомнил, я же делал пример своей многопоточности: 10555629 ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 18:03 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
По-моему как раз это костыль использовать формы и таймеры для асинхронного запуска процедуры, также в примере я не увидел разделяемых данных. Все глобальные данные разделены и нет общих данных. Для работы мне придется копировать данные туда-сюда, также в IDE это работает только в 1-м потоке, новые потоки не создаются. Учитывая затруднения при регистрации на новых системах не вижу никаких преимуществ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 18:45 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2 По-моему как раз это костыль использовать формыЭто было для простоты сделано, чтобы не возиться с лишними объектами или апи. ATM-TURBO 2и таймеры для асинхронного запуска процедурыНу да, без таймера туго. ATM-TURBO 2 также в примере я не увидел разделяемых данныхПример для других целей делался, там даже нет обращения к основному потоку из вторичных. ATM-TURBO 2 Все глобальные данные разделены и нет общих данных.Эээ... общие и разделяемые это одно и тоже или нет? "Глобальные" предполагаются быть в основном потоке, их нужно запрашивать через объектную модель. Вместо Sleep втыкаешь Set mHost = GetObject(, "Cliserv.Host") и юзаешь интерфейс Host. ATM-TURBO 2Для работы мне придется копировать данные туда-сюдаНе понял. Откуда куда? ATM-TURBO 2также в IDE это работает только в 1-м потоке, новые потоки не создаютсяСдается мне, IDE не умеет цепляться к нескольким потокам принципиально, поэтому . Если у clsTask не менять инстансинг, то это вообще в IDE работать не должно, он же NotCreatable, а создается через CreateObject (через New будет создан в основном потоке, в том числе в exe). Из-за CreateObject для IDE он представляется левым COM-классом, экземпляр которого создать невозможно. Надо было для отладки разделить CreateObject и New через #If, не догадался. А для отладки все равно удобней один поток. Когда дебажишь многопоточное приложение в дотнете, сильно раздражает, что один и тот же шаг нужно повторить во всех потоках, только после этого первый поток перейдет на следующий шаг. ATM-TURBO 2Учитывая затруднения при регистрации на новых системах, не вижу никаких преимуществ.Это админские-то права - затруднения? На самом деле есть еще одно затруднение, о котором ты не в курсе. ROT тоже работает лишь под админом, но есть какой-то иной способ, который используется офисом. Офис в ROT не лезет, однако GetObject работает. Но, я не выяснял, что это за способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 19:48 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Скачал tlb, подключил. В IDE многопоточность не будет работать, но запуск все равно возможен просто в том же потоке. При запуске IDE вылетает в астрал. Не вижу никаких преимуществ (с) :) Насчет одного потока - сдается мне, IDE тупо не умеет цепляться к нескольким потокам, потому принудительно крутит код в одном. И потому еще раз: пусть эти товарищи-реаниматоры положат крупный прибор на собственную IDE. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 19:56 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
AntonariyБаян, велосипедист опоздал на 4 года. Здесь автор сделал многопоточность, не рушащую IDE: http://bbs.vbstreets.ru/viewtopic.php?f=54&t=43507 А учитывая то, что многопоточность можно сделать вообще без костылей (в ActiveX exe), ценность библиотеки ТСа стремится к нулю. Так получается, что в обсуждаемой статье готовой вариант DLL / bas не был представлен? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 20:14 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
mihlonAntonariyБаян, велосипедист опоздал на 4 года. Здесь автор сделал многопоточность, не рушащую IDE: http://bbs.vbstreets.ru/viewtopic.php?f=54&t=43507 А учитывая то, что многопоточность можно сделать вообще без костылей (в ActiveX exe), ценность библиотеки ТСа стремится к нулю. Так получается, что в обсуждаемой статье готовой вариант DLL / bas не был представлен?Получается да, я выдал желаемое за действительное. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 20:24 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторЭээ... общие и разделяемые это одно и тоже или нет? Это одно и тоже. Данные общие но некоторые требуют атомарного доступа, а некоторые нет. автор"Глобальные" предполагаются быть в основном потоке, их нужно запрашивать через объектную модель. Вместо Sleep втыкаешь Set mHost = GetObject(, "Cliserv.Host") и юзаешь интерфейс Host. А ты знаешь что тут имеет место быть маршаллинг и если основной поток будет что-то делать и необрабатывать оконные сообщения, или будет делать запрос другому клиенту то запрашивающий поток будет простаивать и ждать. Также будут копироваться данные. Например если мне нужно иметь общий массив то я вынужден его буду копировать туда сюда юзая интерфейсные Property Get/Let. авторЭто админские-то права - затруднения? Да. Ты знаешь надежный способ обхода этих ограничений? авторROT тоже работает лишь под админом, но есть какой-то иной способ, который используется офисом. Офис в ROT не лезет, однако GetObject работает. Но, я не выяснял, что это за способ. Ты можешь придумать сам какой хочешь способ, просто ROT уже есть, но ты можешь сам создать такую таблицу вручную. авторПри запуске IDE вылетает в астрал. Не вижу никаких преимуществ (с) :) Эта версия старая (которая используется во фрактале), используй либо DLL что в первом посте, либо используй модуль на который я выложил ссылку в первом посте. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 20:47 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2А ты знаешь что тут имеет место быть маршаллинг и если основной поток будет что-то делать и необрабатывать оконные сообщенияА он не должен делать ничего такого, чтобы даже оконная процедура не обрабатывалась. Зависший интерфейс это ахтунг. В моем представлении поток должен быстро забрать, что ему нужно, выполнить свою работу, быстро вернуть результат и самоубиться. ATM-TURBO 2Да. Ты знаешь надежный способ обхода этих ограничений?Да. Залогиниться под админом, установить, разлогиниться. Не вижу в этом проблемы. ATM-TURBO 2Например если мне нужно иметь общий массив то я вынужден его буду копировать туда сюда юзая интерфейсные Property Get/Let.Или не копировать, модифицируя его через те же пропертя. Или получить указатель и гадить прямо в память :) Но тут скорее всего я как раз и наткнусь на ошибки совместного доступа, придется это разруливать. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 21:11 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
А он не должен делать ничего такого, чтобы даже оконная процедура не обрабатывалась. Он может делать все что угодно,. он может обрабатывать в этот момент событие от другого потока или нескольких потоков. Да. Залогиниться под админом, установить, разлогиниться. Не вижу в этом проблемы. Ну залогинится под админом это и есть проблема. К тому же, как ты написал что для регистрации в ROT нужны права. Получается что права нужны всегда, а не только на момент установки. Или не копировать, модифицируя его через те же пропертя. Ага и для того чтобы скопировать один элемент массива нужно будет делать маршалинг через границу апартамента (тормозить поток, транспортировать параметры, ждать ответа). Это будет катастрофически медленно нежели использовать прямую запись как у меня. Или получить указатель и гадить прямо в память :) В любом случае это медленней непосредственного обращения. Получаются что данные находятся в одном АП, лежат "бок о бок" а для доступа к ним нужно делать столько работы. Заметь, я не говорю лишней , потому что это не так просто VB6 стандартными средствами непозволит работать напрямую с общими данными и все обращения заранее синхронизированы. Получается как-бы аналог работы не в разных потоках, а в разных процессах. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2015, 22:19 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2 Он может делать все что угодно,. он может обрабатывать в этот момент событие от другого потока или нескольких потоков.Он НЕ ДОЛЖЕН делать все, что угодно. Он должен НЕМЕДЛЕННО отвечать на действия пользователя, а потоки подождут, они нервничать не умеют. А обработка событий другого потока должна занимать считанные миллисекунды. Если время обработки сравнимо со временем работы потока, а не меньше на несколько порядков, то это говно, а не архитектура, и потоки тут не нужны. ATM-TURBO 2Ну залогинится под админом это и есть проблема.А мужики-то не знают и пишут инсталляторы под админов. ATM-TURBO 2 К тому же, как ты написал что для регистрации в ROT нужны права.К тому же я написал, что есть и другие способы, админских прав не требующие. ATM-TURBO 2Это будет катастрофически медленноБудет. Значит не надо так делать в случаях, критических с точки зрения производительности. ATM-TURBO 2В любом случае это медленней непосредственного обращения.Ой вей, вот это новости. Это и есть непосредственное обращение. А с помощью CopyMemory еще более непосредственое. Непосредственней только rtlMoveMemory. x = ObjPtr(obj) - > Set obj = ObjFromPtr(x) и у тебя ссылка на тот же самый объект, что в основном потоке, хотя для объектов этот финт ушами не нужен. Примерно такая же фигня с массивом: VarPtr(arr(0)) - указатель на начало массива, обратную операцию не помню, но суть та же. А в случае с VB насчет "непосредственного" нужно говорить с очень большой осторожностью - чуть более чем половина операций идет через функции рантайма. С переменными типа Variant - вообще все. А вот эта невнятная телега: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2015, 01:34 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Поднял тут давно забытое обсуждение этого способа, там более детально расписывали минусы. Видимо, по большому счету ты таки прав, твой кирпич лучше. Был бы он у меня, когда была нужна многопоточность, рекламировал бы его. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2015, 01:40 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторК тому же я написал, что есть и другие способы, админских прав не требующие. Ну так и не привел реализацию. Возможно что реализация этого метода займет дополнительно несколько кСтрочек кода. авторА мужики-то не знают и пишут инсталляторы под админов. Ну да, получается что для простой утилитки, которая к примеру работает с интернетом нужно делать целый инсталлятор. На многих системах получить админские права достаточно проблематично поэтому сейчас очень актуальны всякие обходы UAC и т.п. авторБудет. Значит не надо так делать в случаях, критических с точки зрения производительности. А как надо тогда? авторЭто и есть непосредственное обращение. А с помощью CopyMemory еще более непосредственое. Непосредственней только rtlMoveMemory. x = ObjPtr(obj) - > Set obj = ObjFromPtr(x) и у тебя ссылка на тот же самый объект, что в основном потоке, хотя для объектов этот финт ушами не нужен. Примерно такая же фигня с массивом: VarPtr(arr(0)) - указатель на начало массива, обратную операцию не помню, но суть та же. Во первых ты не можешь использовать ссылку на объект в другом потоке без маршаллинга, потому что это может привести к краху. Во вторых если данные расположены в произвольном порядке, то тебе для работы с ними придется попотеть. Но это все равно в разы мендленней чем непосредственно написать A = B, да, да и не CopyMemory, ни GetMem не ускорят процесс. Ты конечно можешь замапить массив, но это уже усложнение программы и также медленней непосредственного обращения. Если твой код использует рантайм и код в другом потоке использует рантайм то ты не получишь замедления за счет доступа, так что рантайм тут не причем. КОгда я пишу что-то типа: pubVar = locVar + locVar2 то тут рантайм вообще не юзается. Также если захотеть то можно вообще отказаться от рантайма и не использовать его вплоть до исключения его из импорта. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2015, 07:24 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
AntonariyVB6 в коме, его IDE убога, а электрошок к нему пусть применяют те, кому это интересно. Мне нет, я здесь просто делюсь багажом уже ненужных мне знаний.Вчера был в Библио-Глобусе. Не видном месте стояла книга "Visual Basic 6", переизданная в 2014 (!) году. На верхней полке тоже что-то стояло по VB6, я поленился ради них тащить стремянку.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 10:18 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Shocker.ProAntonariyVB6 в коме, его IDE убога, а электрошок к нему пусть применяют те, кому это интересно. Мне нет, я здесь просто делюсь багажом уже ненужных мне знаний.Вчера был в Библио-Глобусе. Не видном месте стояла книга "Visual Basic 6", переизданная в 2014 (!) году. На верхней полке тоже что-то стояло по VB6, я поленился ради них тащить стремянку.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 11:46 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Вероятно, я скажу банальность, но если книгу кто-то переиздает, значит книгу кто-то покупает.... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 13:37 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Да VB6 такой же яп как и другие, просто не поддерживается больше мелкософтом. На VB6 можно написать любую программу (ну кроме 64-битных, но если применить смекалку то думаю можно и такую написать). В сети есть куча библиотек для него и аддин-ов. Сейчас я разрабатываю адд-ин для расширенной компиляции. Я думаю если получится то можно вообще много каких вещей делать что раньше было невозможно, к примеру инлайн асм-вставки, замена рантаймовских функций своими, создание секций в файле и многое другое. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 13:49 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Shocker.ProВчера был в Библио-Глобусе. Не видном месте стояла книга "Visual Basic 6", переизданная в 2014 (!) году. На верхней полке тоже что-то стояло по VB6, я поленился ради них тащить стремянку.... Переиздание старой скорее всего. К сожалению, что-то типа пикрелейтеда не переиздадут. А ведь книга офигенная по-своей глубине, именно по-внтуренностям VB6. Недавно подарил ее одному программеру. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 14:02 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
EoltНедавно подарил ее одному программеру.Ну вот, а я ведь так просил! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 14:04 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Shocker.ProEoltНедавно подарил ее одному программеру.Ну вот, а я ведь так просил! Ну так я тему создавал чтобы отдать книжки, никто с этого форума не пожелал встретиться и забрать их. Пришлось отдать другому человеку. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 14:06 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Сейчас я разрабатываю адд-ин для расширенной компиляции. Я думаю если получится то можно вообще много каких вещей делать что раньше было невозможно, к примеру инлайн асм-вставки, замена рантаймовских функций своими, создание секций в файле и многое другое. Я вот жду твой аддон, круто если можно будет добавлять в VB-проект внешние .lib и чтобы вызывать функции можно было не через секцию эскорта экзешника. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.06.2015, 14:10 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2... VB6 единственный в своем роде, он COM (ActiveX)-ориентированный и других таких нет и не будет... ну если не будет так об чем речь? там еще кто то про нативность кричал а мужики в курсе что дот нет натив появился? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 14:09 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
капитанская дочкатам еще кто то про нативность кричал а мужики в курсе что дот нет натив появился? если ты про это , то не появился ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 15:05 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Eoltкапитанская дочкатам еще кто то про нативность кричал а мужики в курсе что дот нет натив появился? если ты про это , то не появился ага с той лишь разницей что появился а когда говоришь нативный новый вб вылупится? ну ну ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 16:35 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
капитанская дочкаага с той лишь разницей что появился а когда говоришь нативный новый вб вылупится? ну ну Нет, только для приложений Windows Store, деплоишь их в свой аккаунт в магазине, а там они уже компилируются и пользователь получает нативные бинарники и только x64. Ни о каком создании нативных виндовых приложений и речи нет. Короче нафиг такую "нативность". ... |
|||
:
Нравится:
Не нравится:
|
|||
17.06.2015, 18:00 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Eoltкапитанская дочкаага с той лишь разницей что появился а когда говоришь нативный новый вб вылупится? ну ну Нет, только для приложений Windows Store, деплоишь их в свой аккаунт в магазине, а там они уже компилируются и пользователь получает нативные бинарники и только x64. Ни о каком создании нативных виндовых приложений и речи нет. Короче нафиг такую "нативность". да ну а студия 15 не компилит сразу магазинные приложения? а мелкомягкие что на бильд 2015 сказли про натив компилирование? на край ngen.exe чем не нативный компилятор? а всегда ли натив лучше джит? это очередной срач от любителей антиквара и не более того ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 12:08 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
авторда ну а студия 15 не компилит сразу магазинные приложения? а мелкомягкие что на бильд 2015 сказли про натив компилирование? Пиши по-русски правильно и без ошибок, тогда окружающие поймут, какую мысль ты хотел выразить. авторна край ngen.exe чем не нативный компилятор? Тем что это надстройка над JIT, которая просто сохраняет машинные образы вместе со сборкой. Работает не всегда и не везде. .NET игнорирует образ, если находит какое-то не соответствие между MSIL сборкой и ее образом созданным ngen`ом. автора всегда ли натив лучше джит? - Натив всегда быстрее. JIT практически не оптимизирует машинный код, он не для этого создавался. - Нативу не нужно 50 мегабайт рантайма. - Нативный код не декомпилируется за 10 секунд рефлектором. - У нативного кода нет идиотского, неотключаемого сборщика мусора. Который по-идее должен нажимать за вами кнопку унитаза, после посещения туалета. Но я достаточно умен, чтобы самостоятельно смывать унитаз, и хочу сам выбирать момент когда это сделать. А MS почему-то думает, что кодер это обезьяна, за которую надо выполнять простейшие действия, платя за это потерей производительности. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 13:28 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Eoltавторда ну а студия 15 не компилит сразу магазинные приложения? а мелкомягкие что на бильд 2015 сказли про натив компилирование? Пиши по-русски правильно и без ошибок, тогда окружающие поймут, какую мысль ты хотел выразить. авторна край ngen.exe чем не нативный компилятор? Тем что это надстройка над JIT, которая просто сохраняет машинные образы вместе со сборкой. Работает не всегда и не везде. .NET игнорирует образ, если находит какое-то не соответствие между MSIL сборкой и ее образом созданным ngen`ом. автора всегда ли натив лучше джит? - Натив всегда быстрее. JIT практически не оптимизирует машинный код, он не для этого создавался. - Нативу не нужно 50 мегабайт рантайма. - Нативный код не декомпилируется за 10 секунд рефлектором. - У нативного кода нет идиотского, неотключаемого сборщика мусора. Который по-идее должен нажимать за вами кнопку унитаза, после посещения туалета. Но я достаточно умен, чтобы самостоятельно смывать унитаз, и хочу сам выбирать момент когда это сделать. А MS почему-то думает, что кодер это обезьяна, за которую надо выполнять простейшие действия, платя за это потерей производительности. не говори мне что делать и я не скажу куда тебе пойти. русский это 5 или 6 язык что я изучал и я считаю верхом мастерства освоить сленг. ежели ты не слышал о VS2015RC и Microsoft Build Events то уж не моя беда что до надстройки то криворукость не порок что до разницы в производительности то в большинстве случаев это микросекунды при скорости написания аналогичной проги в разы быстрее и стабильнее что твоих пунктов ты часом не апельсины с бананами сравниваешь? все хорошо по своему нативность ради нативности глупо и смешно ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 14:18 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
капитанская дочкане говори мне что делать и я не скажу куда тебе пойти. русский это 5 или 6 язык что я изучал и я считаю верхом мастерства освоить сленг. ежели ты не слышал о VS2015RC и Microsoft Build Events то уж не моя беда что до надстройки то криворукость не порок что до разницы в производительности то в большинстве случаев это микросекунды при скорости написания аналогичной проги в разы быстрее и стабильнее что твоих пунктов ты часом не апельсины с бананами сравниваешь? все хорошо по своему нативность ради нативности глупо и смешно Бессмысленный флуд. Просьба не засоряй тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 17:01 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
капитанская дочка русский это 5 или 6 язык что я изучала на руках у тебя в сумме около десяти пальцев? это не те показания, где есть простор для путаницы. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 18:13 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Eoltкапитанская дочкане говори мне что делать и я не скажу куда тебе пойти. русский это 5 или 6 язык что я изучал и я считаю верхом мастерства освоить сленг. ежели ты не слышал о VS2015RC и Microsoft Build Events то уж не моя беда что до надстройки то криворукость не порок что до разницы в производительности то в большинстве случаев это микросекунды при скорости написания аналогичной проги в разы быстрее и стабильнее что твоих пунктов ты часом не апельсины с бананами сравниваешь? все хорошо по своему нативность ради нативности глупо и смешно Бессмысленный флуд. Просьба не засоряй тему. ладно я тебе по-детски по-русски расскажу - я не люблю когда мне указвыают что делать и как да ты и сам не любишь не так ли? так что не надо мне указвыать пиши по-русски я пишу как могу. и не надо мне писать не засоряй тему не нравится пиши господину модератору. ты же небось и сам понимаешь что критика и приказы исполняются с точностью донаоборот - .net native в VisualStudio 2015RC компиллирует те самые Windows Store Apps. я никуда ничего не скидывал. скомпиллировал и проверил и все работало - ngen.exe работает так как от него ожидается. у меня проблем не было. ты хорошо ознакомился с мануалом? - да в подавляющем большинстве случаев нативный код быстрее и ест меньше ресурсов (обрати внимание так не всегда). за это ты платишь временем на разработку и возможностью софта работать на разном железе. с другой стороны выигрышь в производительности едва заметен. ну разве что ты пишешь супер трейдинг систему где скорость это все. на моей практике в 98% разница не видна конечному пользователю. по сему - нативность ради нативности? потом я не понимаю если уж тебе важно чтобы все работало быстро может бытьь с++ будешь еще лучше? - по большому счету сравнивать vb6 и .net это как сравнивать яблоки и апельсины. ты скажешь что я первый .net упомянул. да так тебе же нативность важна или какая то особенная? - кажется на Build2015 было сказано что Microsoft будет работать в направлении MSIL -> Native. еще бы им Java 8 догонять надо - хочешь упираться рогом, плыть против течения и писать на vb6 пиши полиция к тебе в дом не придет и комп за это не отберет. - преджде чем ты будешь писать ответ подумай какие бы аргументы ты не привел и как сильно бы не заплевал экран какждый из нас останется при своем мнении - а вообще я видел и раньше любовь и страсть до vb6 но там было про старого пса что не научить новым трюкам and that being said. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 01:40 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariyкапитанская дочка русский это 5 или 6 язык что я изучала на руках у тебя в сумме около десяти пальцев? это не те показания, где есть простор для путаницы. а ты не завидуй))) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 01:41 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
капитанская дочкаAntonariyпропущено... а на руках у тебя в сумме около десяти пальцев? это не те показания, где есть простор для путаницы. а ты не завидуй)))чему? Как ты херово выучил язык? Что ты врать так и не научился? Шесть или семь, ага. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 09:18 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
А тем временем автор топика пропал, и про его аддин для подключения .LIB ничего не слышно... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 10:21 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Я тут, аддин пилю потихоньку. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 10:42 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Antonariyкапитанская дочкапропущено... а ты не завидуй)))чему? Как ты херово выучил язык? Что ты врать так и не научился? Шесть или семь, ага. я смотрю тут ребята сурьезные собрались деваться некуда с волками жить... поймал ты меня я кроме русского других языков и не знаю да и тот плохо только писать умею а читать пока только учусь Модератор: далее только по теме ... |
|||
:
Нравится:
Не нравится:
|
|||
22.06.2015, 12:55 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Здравствуйте, джентльмены. Приветствую, ATM-TURBO 2 Спасибо огромное за TrickMultithreading.dll Заменив ей стандартную M$ CreateThread Lib "kernel32" я избавился от падений IDE при закрытии формы. Отладку приходится вести через логи, но и то вперед. Скилл у меня чуть ниже плинтуса, поэтому возникли вопросы... Вынес я их в отдельную тему - чиста практика, чиста для молодых :) - по применению твоей разработки. Если что - модераторы меня поправят. ATM-TURBO 2, взгляни пожалуйста: 17823102 А то тут идет академическое обсуждение, в котором мои дурацкие вопросы будут явно неуместны и зафлудят тред. С этим и без меня прекрасно справится капитанская заты... скузи, милая... дочка :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2015, 12:07 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
Mina Anna MazziniОтладку приходится вести через логи, но и то вперед. Ты можешь спокойно отлаживать в OllyDbg. Компилируй проект с символьной информацией (галочка в свойствах компилятора). Компилируй. Открывай EXE в ольке. Заходи View-Source files и там будут все твои исходные коды. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2015, 16:13 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, спасибо и за эту подсказку. Обязательно попробую. . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2015, 19:47 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, а КАК зарегистрировать TrickMultithreading.dll у меня точку входа не находит ни кто... ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 13:18 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
час58, Не нужно регистрировать. Просто положить в System32/SysWOW64 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:27 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:28 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, Ругается. Где взять функцию? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:43 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
И ссылку показывает как миссинг. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2016, 17:47 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
В стартовом посте есть ссылка на tlb ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 10:49 |
|
Многопоточность на VB6.
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, спс ... |
|||
:
Нравится:
Не нравится:
|
|||
19.10.2016, 11:21 |
|
|
start [/forum/topic.php?all=1&fid=60&tid=2155298]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
2ms |
others: | 301ms |
total: | 492ms |
0 / 0 |