Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 7

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

09.09.2013, 10:55. Показов 2266. Ответов 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 7
09.09.2013, 15:47  [ТС]
Цитата Сообщение от The trick Посмотреть сообщение
При использовании методов синхронизации, можно запустить одну функцию в нескольких потоках.
Вам придется разграничить мьютексами или критическими секциями чуть ли не все строки, особенно функции (методы, переменные, массивы и т. д.) VB.
Код превратится в кашу. Чтобы этого не было, поддержка многопоточности должна быть встроена в ЯП.
0
Эксперт по электронике
6569 / 3196 / 335
Регистрация: 28.10.2011
Сообщений: 12,475
Записей в блоге: 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): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru