Вопрос: 2010, multithreading | Добавлено: 02.01.10 13:07 |
Автор вопроса: ![]() |
С момента выхода Visual Studio 6 прошло что-то около 12 лет? И вот он, хоть и кривоватый, но safe мультитрединг. Музей бейсика пополнен новым экспонатом=) To make our thread work smoothly, we need to set a memory address in the TLS (Thread's Local Storage) with the index same that VB uses while accessing
data. First we need to extract the TLS index from MSVBVM60.dll. I extracted it from __vbaSetSystemError procedure. Then we need to set a Memory address in it so that it could act as a TLS. And just any memory won't work too. Its because VB just doesn't accesses the TLS only but also the contents of the TLS. A TLS contains many things and among them can be other memory addresses too. So if we do set another memory then VB will access say a memory address that it stored from the main thread in the TLS but it will get another address or perhaps 00000000. And again when it access that 00000000 Memory Access Violation occurs. So a better fix will be to store the same memory address that main thread uses. But we shall be careful to not override that memory because it can hamper the functioning of main thread as well as our thread. http://www.planet-source-code.com/vb/scripts/showcode.asp?txtCodeId=72776&lngWid=1
|
Ответы | Всего ответов: 32 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 02.01.10 13:45 |
Вкусно!!! |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #2 | Добавлено: 02.01.10 14:28 |
Ссыль не смотрел, у мну есть стабильный вариант, но нет времени развить его, там просто длинный цикл. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 02.01.10 15:32 |
Который средствами вб раскидывается по ядрам)))) |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #4 | Добавлено: 02.01.10 16:19 |
Который средствами винды раскидывается по ядрам ![]() |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 87 Ответов: 2795 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 02.01.10 16:52 |
Длинный цикл говорите)) То есть, например, к интернет-радиостанции подключаться в цикле? отправил пару байт, принял пару байт, If GetQueueStatus(255) Then DoEvents, и с начала![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #6 | Добавлено: 02.01.10 18:09 |
Нееет, ты не понял.
Я имел ввиду как в примере Палача, в отдельном потоке крутится длинный и тормозной цикл, а прога (форма) не висит. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #7 | Добавлено: 02.01.10 18:11 |
У меня просто нет времени довести его до ума. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 02.01.10 18:39 |
А как ты делаешь, например, три отдельных потока, и чтоб каждое по ядру? Или я тебя не правильно понимаю? Или у тебя параллельно с винмаин потоком висит только один для всей лабуды, типо очереди задач, она все, что к ней поступает решает в отдельном потоке? |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #9 | Добавлено: 02.01.10 20:18 |
VBD ты протрезвелбы сначала.
Яже написал "не довел до ума", какие нах три потока? |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #10 | Добавлено: 02.01.10 20:33 |
Я у тя просил готовый пример, ты не дал, а теперь ещё и стебешься вдобавок?
Если мне срочно понадобится мультитрединг я просто куплю твой мегамозг на пару дней и ты мне всё напишешь в лучшем виде ![]() денег мне хватит ... |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 02.01.10 20:53 |
[Спокойно с улыбкой]
1. Я на тебя не рыпаюсь. ![]() 2. Я протрезвел. ![]() 3. Я случайно забыл дать тебе пример ![]() [/Спокойно с улыбкой] [Ухмыляясь] Мой мозг тебе не по карману)) Это скорее мне твой мозг по карману. ![]() [/Ухмыляясь] |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #12 | Добавлено: 02.01.10 21:05 |
Правда?!
Да ты я вижу серьезно! Не перестаёшь меня удивлять! Сколько ты готов платить? |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 246 Ответов: 3333 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 02.01.10 21:10 |
А ты?) |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #14 | Добавлено: 02.01.10 21:14 |
Удали свой пост 13, даю шанс. |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ICQ: adamis@list.ru Вопросов: 153 Ответов: 3632 |
Профиль | Цитата | #15 | Добавлено: 02.01.10 21:26 |
Ну раз тебя всётаки интересует этот вопрос значит мне по карману ![]() |
|