![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
DenDen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 25.3.2004 Репутация: нет Всего: нет |
Привет!
Вчера долго-долго-......-долго-.... пытался отыскать ошибку в своей проге. Отыскал, оказалось один из потоков портит данные, к которым доступа иметь вообще не может(Отметим, что в порядке паранойии я уже давно забыл о существовании +,-,= итд и пользуюсь только разными Interlocked..., все переменные volatile, контекст сбрасывется 2-жды 1 раз регулярно, другой раз мной--все естессвенно тормозит).Устранил я ошибку довольно просто: распихав все подозрительные и не очень- и совсем не- данные по разным кучам и эти кучи заперев. Посему внимание вопрос. Я уверен, что у большинства из Вас потоки тоже много чего попортили и очень бы хотелось Услышать способы избавления от этой порчи. |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Можно и не распихивать данные по кучам, а устроить обычный синхронизированный доступ к ним... Есть же критические секции, а если не нравятся - спасёт проверенная связка "какой-нибудь объект синхронизации" + WaitForSingle/MultipleObject(s) -------------------- ![]() |
|||
|
||||
DenDen |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 84 Регистрация: 25.3.2004 Репутация: нет Всего: нет |
Thanks.Дело в том, что ставить Синхронизаторы или секции на все куски данных весьма накладно(Переход ядро-пользователь 1000 тактов, в случае секции конечно лучше), но потом очень легко запутаться какой объект за что отвечает. У меня поток портил те данные, о существоаниии которых и знать то не должен. Я, в принципе задал, вопрос с неким подткстом. Многие в детстве/отрочестве/юнности разбирали ядро и видели, что Intelocked штуки находятся в обкладках из недокуменнтированных функций. Проследить их до конца я не смог. Понимяю, что сейчас получу по шапке от Модератора, но если кто-то из вас разобрался, что это за функции такие и может сказать их нормальные имена(если есть), то скажите PLS.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |