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

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

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

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

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

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

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

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

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


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

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

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


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

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

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


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

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

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


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