Member
Статус: Не в сети Регистрация: 16.11.2010 Откуда: Россия
efa писал(а):
Я как-то читал сталью одного умника, который писал о первых бульдозере. Мол сам по себе проц г...о но только и за софта, то есть нужно создать новый тип языка который будет корректно работать с много модульными ядрами. По его словам это даст прирост в производительности от 200 до 400%.
Member
Статус: Не в сети Регистрация: 17.05.2009 Откуда: Усть-Илимск
Я вот не понимаю, многоядерные процы/GPGPU существует уже предостаточно давно. Ну неужели эти слоупоки (не в обиду местным прогерам, но всё же) за столько лет не придумали эффективных способов распараллеливания основных задач?
Я вот не понимаю, многоядерные процы/GPGPU существует уже предостаточно давно. Ну неужели эти слоупоки (не в обиду местным прогерам, но всё же) за столько лет не придумали эффективных способов распараллеливания основных задач?
Почему не придумали? Как раз "основные задачи" хорошо распараллеливаются. В данном случае речь идёт о новом подходе к расчёту графики.
Да у меня задача то была создать поток для чтения COM порта... мне то критической секции хватило для общего с основным потоком массива, но и немного прочитал о других способах синхронизации. Сложность всего этого в том что сначала непонятно правильно ли работает доступ потоков к общим данным, а потом когда оказывается что неправильно, то сложно понять почему именно неправильно и при этом логические ошибки в самих потоках тоже никто не отменял. Благо хоть как в любом деле - сначала сложновато, а потом изученное начинает восприниматься как само собой разумеющееся
А каким образом вы дебажите многопоточные приложения, если не секрет?
Member
Статус: Не в сети Регистрация: 31.07.2006 Откуда: Самара
therg писал(а):
А каким образом вы дебажите многопоточные приложения, если не секрет?
Да я то их в общем и не дебажу. Поток для ком порта - это многопоточное приложение с огромной натяжкой... Ну а так, каждый поток - своя программа так сказать и отдельно они работают замечательно, но вот когда они встречаются! На моей задаче был общий массив куда поток чтения дописывает в конец полученные данные, а основная программа роется в этом массиве по таймеру, выделяет из него пакеты согласно протоколу и после обнаружения пакета вытаскивает его из массива и сдвигает другие данные к началу на размер пакета. Получается что два потока пишут в один массив... а по умолчанию они друг о друге ничего не знают. Ну написал момент работы с массивом в критической секции, по идее это должно останавливать один поток от работы с массивом, пока его не освободит другой поток если работает с ним. А вот как понять что это действительно работает и они оба одновременно не пишут в массив вызывая порчу данных- это только писать отдельные куски кода в обоих потоках, которые будут пытаться активно что нибудь записать в общий ресурс и постоянно контролировать отсутствие глюков, я так проверял. Ну а сам поток ком порта дебажил как и обычную программу, ну правда первое время выводил данные из него опасными способами. Вот как то так это у меня пока получается.
а по умолчанию они друг о друге ничего не знают. Ну написал момент работы с массивом в критической секции, по идее это должно останавливать один поток от работы с массивом, пока его не освободит другой поток
в крит.секции проверять позиции записи потоков
_________________ Считать ли близким каждого недалёкого человека? Intel Inside is not trademark - it's a WARNING!!!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения