powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Объявление переменной в VB как volatile
13 сообщений из 13, страница 1 из 1
Объявление переменной в VB как volatile
    #32388956
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hello всемогущий ALL.
Переменной присваивается значени в ActivX (то есть в отдельном thread)
При получении значения переменной в проекте использующем этот ActiveX в ней находятся устаревшии данные.
Есть ли смысл в сабже и если есть как это осуществить или есть другие пути.

Спасибо
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32389002
boevik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты передаешь как ByRef и значение не изменяется?
И что значит volatile?
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32389007
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Значение берется by Val
Объявление переменной в С/C++ (Win API) volatile int myVal; гарантирует что, значение переменной будет храниться только в переменной (в памяти), а не в регистре процесора или кеше.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32389414
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 almuk
Ты зачем служебное слово из с++ используешь в VB ?

Что скажет с++ компилятор если ты там например введешь сл
for i=2 to 12 step 2
print i
next i
Пошлет тебя подальше и правильно сделает!

На VB можно получать доступ к WinAPI функциям , писанных кстати на с++ лишь вызывая их и кидая в них параметры. Все , какие к черту volatile.

Вообще , может я и ошибаюсь
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32389658
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я и не говорил что использую volatile в VB , Вопрос в том как это осуществить в бейсике
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32389921
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1)
Hello всемогущий ALL.
Переменной присваивается значени в ActivX (то есть в отдельном thread)
При получении значения переменной в проекте использующем этот ActiveX в ней находятся устаревшии данные.
Есть ли смысл в сабже и если есть как это осуществить или есть другие пути.
2)
Значение берется by Val

О чем все же речь? Что ЭТО осуществить?
Что такое "устаревшие данные"?
Передача параметра byVal?
VB6?

Если ЭТО объявление volatile - то НИКАК - в VB нет синтаксического запрета на размещение переменных в регистрах, просто потому, что объявленные переменные он там не размещает никогда.
в первом приближении - все что не static - размещается в стеке (По крайней мере то, на что указывает varptr). static сидят в свем специальном разделе DATA

Теперь про ByVal и устаревшие данные. Если под устаревшими данными понимается то, что после выхода значение остается таким, как было до входа - это нормально прописанное поведение byval для числовых типов. Строки, массивы и объекты живут своей жизнью. То есть Если данные числовые - они И ДОЛЖНЫ БЫТЬ УСТАРЕВШИМИ.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390071
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я не большой впециалист в VB и может я ошибаюсь. Но если в программе на С/С++ существуют скажем 2 threads один постоянно изменяет значение переменной второй его принимает (переменная глобальная), тот thread который принимает значение переменной берет его из памяти, но новое значение может еще не попасть в память оно находится в кеше процесора или в его регистр.

Теперь про ByVal и устаревшие данные. Если под устаревшими данными понимается то, что после выхода значение остается таким, как было до входа - это нормально прописанное поведение byval для числовых типов. Строки, массивы и объекты живут своей жизнью. То есть Если данные числовые - они И ДОЛЖНЫ БЫТЬ УСТАРЕВШИМИ


Я знаю что значение переменной изменилось (его изменил первый поток) но второй потокок взявший это значение byVal получил значение переменнай бывшее до изменения в первом потоке, т.к. новое значение переменной еще не попало в память. Для этого и используется volatile.
Все описанное относится к С/С++,

Но в моей проге на VB есть ActiveXы которые бегают в отдельных потоках и общаются посредством глобальных переменных. И я знаю что значение переменной (глобальной) изменилось в 1м ActiveX-е а 2й ActivX взявший это значее определил его как не изменившееся.

Вот я и подумал может ли возникнуть такая ситуация (Multi Thread C/С++) в VB, или у меня в программе на VB баг.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390107
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Но в моей проге на VB есть ActiveXы которые бегают в отдельных потоках и общаются посредством глобальных переменных. И я знаю что значение переменной (глобальной) изменилось в 1м ActiveX-е а 2й ActivX взявший это значее определил его как не изменившееся.


Зачем используешь VB если его плохо знаешь, бери свои "сиськи" и вперед.
То что ты пишешь про ActiveX полная лажа! Ты еще десяток ActiveX используй , которые "обмениваются значениями" и тогда совсем потонешь
Какие к черту потоки, какие камни , дяди Кеши , ты что там вообще делаешь? Знания VB у тебя хромают , а ты сразу ActiveX стряпаешь на нем. Объясни мне зачем ActiveX - ам меняться значениями. Что , в одном всю логику нельзя сделать?
Работа с COM - сильная сторона VB , а ты занимаешься извратом.
По моему ты просто перегнул палку. Объясни , что тебе нужно.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390150
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вопрос был предельно прост

Есть ли смысл в сабже и если есть как это осуществить или есть другие пути.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390166
almuk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Eternal
Немного больше уважения к собеседнику.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390185
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Almuk:
покажите примерный код. Может разберемся что к чему.
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32390379
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо если в программе на С/С++ существуют скажем 2 threads один постоянно изменяет значение переменной второй его принимает (переменная глобальная), тот thread который принимает значение переменной берет его из памяти, но новое значение может еще не попасть в память оно находится в кеше процесора или в его регистр.

<...тут почикано...>


Я знаю что значение переменной изменилось (его изменил первый поток) но второй потокок взявший это значение byVal получил значение переменнай бывшее до изменения в первом потоке, т.к. новое значение переменной еще не попало в память. Для этого и используется volatile.
Все описанное относится к С/С++,

Еще раз про ByVal - Сие Изобретение предназначенно для того, чтобы копировать ЗНАЧЕНИЕ ПЕРЕМЕННОЙ, а не АДРЕС ПЕРЕМЕННОЙ в стек вызываемой процедуры. Для числовых данных это безоговорочно работает. НЕ РАСЧИТЫВАЙТЕ использовать как общий ресурс, числовую переменную, переданную как ByVаl. В паре с ByVаl так железно отработает объектный тип.

ЗЫ
А подучить, придется, не только VB...
...
Рейтинг: 0 / 0
Объявление переменной в VB как volatile
    #32391171
Фотография # Darth Vader #
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 almuk
Ну уж если обидел , извини меня. Но ты по моему лепишь "горбатого".
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Объявление переменной в VB как volatile
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]