Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7

Вопросы многопоточности в VB6

09.09.2013, 10:55. Показов 2278. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
 Комментарий модератора 
Часть сообщений выделена из темы: Бесплатные редакторы vb6?


Сможете ли вы написать многопоточную прогу на VB 6? А ведь это элементарная вещь и без ее поддержки невозможно (или затруднительно) написать прогу, сложнее калькулятора.
Можно продолжить перечислять недостатки VB, но думаю что в этом смысла нет, вы и их и так знаете, да и тема для этого не подходящая.
По моему мнению, VB 6 не подходит для создания сложных прог.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2013, 10:55
Ответы с готовыми решениями:

Есть ли у кого вопросы к MS экзаменам по VB6 (70-175 и 70-176)
Есть ли у кого информация о вопросах на microsoft экзаменах по VB6 или дайте ссылку где есть Спасибо

Windows 2000 Rus VB6, VB6 Resource Editor отсутствует
В Windows 2000 Rus + SP3 проинсталлировал Visual Studio 6 + MSDN Full (вся студия на 6 CD-R). В VB6 “Add-In Manager” всего три компонента,...

Контроль длины Label. А также VB6 Portable vs VB6 Installed.
Исходя из заголовка темы, вопроса 2: 1.) Как определить, что в Label уже не хватает места для Caption? Длина букв разная. Например,...

25
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 12:25
Цитата Сообщение от locm Посмотреть сообщение
Сможете ли вы написать многопоточную прогу на VB 6?
Можно
Цитата Сообщение от locm Посмотреть сообщение
А ведь это элементарная вещь и без ее поддержки невозможно (или затруднительно) написать прогу, сложнее калькулятора.
Пишут и игры и много другое, не надо делать таких громких заявлений.
Цитата Сообщение от locm Посмотреть сообщение
По моему мнению, VB 6 не подходит для создания сложных прог.
На VB6 можно написать практически любую прогу.
1
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 12:29  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Можно
Допустим. Приведите пример корректно работающей, многопоточной проги на VB.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 13:05
Цитата Сообщение от locm Посмотреть сообщение
Приведите пример корректно работающей, многопоточной проги на VB.
http://www.silicontaiga.ru/home.asp?artId=4762
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 13:19  [ТС]
Там описание WinAPI функций управления потоками. И что это дает?
Ознакомьтесь с этой темой. Многопоточность в VB6: возможно ли
В свое время я потратил много сил и времени, чтобы понять как реализовать многопоточность на VB6. Я прочитал много статей и перепробовал много примеров. В результате я пришел к выводу, что это ВОЗМОЖНО, но пользоваться этим практически НЕЛЬЗЯ из-за крайней неустойчивости работы. Поэтому когда вам предлагают вот такие красивые примеры - НЕ ОБОЛЬЩАЙТЕСЬ это всего-лишь ПРИМЕР. Когда вы попытаетесь использовать его в реальной задаче - у вас ничего не получится. Увы
Для те, кто все-таки хочет попытаться создать многопоточное приложение под VB6, могу открыть один ВАЖНЫЙ секрет, про который почему-то никто не знает, да и я наткнулся на него после долгих поисков - для того чтобы многопоточность работала более-менее стабильно, вы должны компилировать свою задачу ТОЛЬКО В P-КОДЕ !!! При этом как правило, при завершении работы из-под среды, она будет падать, и это нормально, потому что среда VB подставляет себе в качестве основного потока, в котором "живут" все остальные. Если вы готовы пройти через такие мучения - я готов вами восхищаться.
И эти посмотрите.
Ищу способ создать не глюченый дополнительный поток
Многопотоковое программирование на VB
Как создать поток, в котоком будет выполняться фоновая функция?
Многопотоковость в VB??

И после прочтения всего этого, жду от вас примера многопоточной, безглючной проги на VB, ведь вы утверждаете что это возможно.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 13:43
По ссылке, которую я дал, в конце есть исходник с программой.
Вложения
Тип файла: zip multithreading_in_vb.zip (15.0 Кб, 17 просмотров)
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 14:02  [ТС]
Что и требовалось доказать.
Миниатюры
Вопросы многопоточности в VB6  
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 14:05
На моем компьютере все нормально работает и из среды и при компиляции в P-Code. Никаких ошибок, все корректно завершается и не падает.
Миниатюры
Вопросы многопоточности в VB6  
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 14:10  [ТС]
Нажмите пару раз на StartThread (1 или 2, не имеет значения) и увидите эту ошибку.

И еще, попробуйте из разных потоков, работать со строками. Тоже будут падения проги.
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
09.09.2013, 14:13
The trick, всё работает
Миниатюры
Вопросы многопоточности в VB6  
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 14:30
Цитата Сообщение от locm Посмотреть сообщение
Нажмите пару раз на StartThread (1 или 2, не имеет значения) и увидите эту ошибку.
Конечно. Если одну и туже функцию для потока использовать то конечно.
Цитата Сообщение от locm Посмотреть сообщение
И еще, попробуйте из разных потоков, работать со строками. Тоже будут падения проги.
Можно работать если пользоваться строковыми функциями WinApi lstrcat и им подобными.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 14:50  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
Конечно. Если одну и туже функцию для потока использовать то конечно.
А не должно падать. Хоть 1000 потоков запустить - должно работать без глюков и крешей.
Вот поэтому нормальная работа с потоками в VB невозможна.
0
09.09.2013, 14:51

Не по теме:

Надеюсь не ошибаюсь, создаём класс модуль в котором необходимые функции написанные на WinApi
в теле программы:

AAA= new мой класс
BBB= new мой класс

После этого я смогу обращаться к созданному объекту BBB пока объект AAA занят и этот объект будет выполнятся уже в другом потоке независящем от объекта AAA.

0
09.09.2013, 15:13  [ТС]

Не по теме:

Цитата Сообщение от radlif Посмотреть сообщение
AAA= new мой класс
BBB= new мой класс
Скорее всего будут глюки.
Скорее всего придется создавать отдельный класс для каждого потока, но не факт что будет стабильно работать.

0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
09.09.2013, 15:26
Цитата Сообщение от locm Посмотреть сообщение
Скорее всего будут глюки.
Скорее всего придется создавать отдельный класс для каждого потока, но не факт что будет стабильно работать.
Небудет. Будут только в том случае если попытаешься результат работы обоих экземпляров классов писать в 1 и туже переменную или что то типо того.
0
Модератор
10048 / 3894 / 883
Регистрация: 22.02.2013
Сообщений: 5,847
Записей в блоге: 79
09.09.2013, 15:36
Цитата Сообщение от locm Посмотреть сообщение
А не должно падать. Хоть 1000 потоков запустить - должно работать без глюков и крешей.
Вот поэтому нормальная работа с потоками в VB невозможна.
В этом примере никакой синхронизации потоков нет, поэтому этот пример годится для создания функций работающих в фоне и работающей каждая в одном потоке, это тоже многопоточное приложение, т.к. работают две нити одновременно. При использовании методов синхронизации, можно запустить одну функцию в нескольких потоках.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 15:38  [ТС]
Цитата Сообщение от radlif Посмотреть сообщение
Небудет.
Я бы не был бы в этом так уверен.
Дело вот в чем.
У экземпляров класса общий код, поддерживающий их работу и он не оптимизирован на многопоточность.
Прочитайте темы на которые я дал ссылки. Другие уже пробовали проделывать все это и выяснили что многопоточность в VB приводит к крайней нестабильности проги и она может упасть в любой момент.
Вам нужна стабильная прога, или такая, которая будет падать через определенный промежуток времени или выдавать неправильный результат?
0
 Аватар для radlif
44 / 44 / 3
Регистрация: 18.12.2011
Сообщений: 577
09.09.2013, 15:46

Не по теме:

The trick, Как я понял стандартные функции vb6 глючат если их одновременно вызвать, или глючат ток
пользовательские функции?



Добавлено через 6 минут

Не по теме:

Цитата Сообщение от locm Посмотреть сообщение
Я бы не был бы в этом так уверен.
Дело вот в чем.
У экземпляров класса общий код, поддерживающий их работу и он не оптимизирован на многопоточность.
Прочитайте темы на которые я дал ссылки. Другие уже пробовали проделывать все это и выяснили что многопоточность в VB приводит к крайней нестабильности проги и она может упасть в любой момент.
Вам нужна стабильная прога, или такая, которая будет падать через определенный промежуток времени или выдавать неправильный результат?
Когда создаёшь объект создаёшь дубликат класса в оперативной памяти который не как не зависит от
самого класса, так же хоть 1000 объектов этого класса создай их работа не как не будет зависить друг от друга и от класса родителя. Эт вроде как основы опп)

0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 15:47  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
При использовании методов синхронизации, можно запустить одну функцию в нескольких потоках.
Вам придется разграничить мьютексами или критическими секциями чуть ли не все строки, особенно функции (методы, переменные, массивы и т. д.) VB.
Код превратится в кашу. Чтобы этого не было, поддержка многопоточности должна быть встроена в ЯП.
0
Эксперт по электронике
6789 / 3216 / 335
Регистрация: 28.10.2011
Сообщений: 12,552
Записей в блоге: 7
09.09.2013, 15:50  [ТС]
Цитата Сообщение от radlif Посмотреть сообщение
Когда создаёшь объект создаёшь дубликат класса в оперативной памяти
А вы не думали что существует код (генерируемый компилятором), который поддерживает работу классов? Конечно он скрыт от программиста и вы наверное про него и не слышали, но он есть. Вот, в нем нет поддержки многопоточности и велика вероятность падения проги или выдачи неправильного результата - глюков.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2013, 15:50
Помогаю со студенческими работами здесь

Когда вопросы кончаются, сделать кнопку неактивной и вывести сообщение о том, что вопросы кончились
Кто знает ребят подскажите в чем проблема, есть метод обновляющий текст в TextView (всего 6 вопросов). Так вот когда вопросы кончаются...

по многопоточности
У меня есть анимация переходов... я её применил на боди и футер так сказать.. как сделать чтобы этот код выполнялся синхронно? public...

О многопоточности
Интересно, стало, а сколько всего потоков я могу открыть в своем проекте, существуют ли какие нибудь ограничения? и от чего зависит...

Основы многопоточности
Здравствуйте уважаемые знатоки! Пытаюсь изучить потоки по официальной документации , плохо идёт. Как правильно синхронизировать 2 потока...

Организация многопоточности
Всем привет! Работаю над приложением WinForms, которое использует API, дальнейшая десериализация и т.д. Имеется функция: public void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru