2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Проблема запуска многопоточного приложения на двухядернике
Сообщение08.04.2008, 11:40 


21/03/06
1545
Москва
Проблема такая: перешел я с Builder 5 на Builder 6. Зачем - отдельный вопрос, как говорится - все работало - не трогай, а я тронул - ну и получил несколько приколов.

Никак не могу отловить такой глюк: после пересборки проекта под Builder 6, выполняющегося в 2 потока, активно юзающего com-port и компонент TImage, и многократном запуске его (проекта) на компьютере на базе Intel Pentium M, проблем не было. Ну, думаю, все хорошо - засад не ожидал.

Запуски же на компьетере с Core2Duo приводят к вылетам программы в случайном месте после 1 сек... 10 мин работы!

Пробовал привязывать приложение строго к одному ядру - не помогает.

Глюки стабильно не проявлялись на одноядерном процессоре, и стабильно проявляются на многоядерном.

В чем может быть дело, кто-нибудь сталкивался с подобным?

 Профиль  
                  
 
 
Сообщение08.04.2008, 12:10 


04/10/05
22
Может быть у потоков есть общие структуры данных к которым они могут обращаются одновременно и отсутствуют методы синхронизации доступа к ним?

 Профиль  
                  
 
 
Сообщение08.04.2008, 14:46 


21/03/06
1545
Москва
Все возможно, буду искать, спасибо.

 Профиль  
                  
 
 
Сообщение09.04.2008, 08:27 
Заслуженный участник
Аватара пользователя


17/10/05
3709
:evil:
Не наблюдал (я и процессоров то многоядерных пока не видел).

Не обидитесь, если выскажу несколько общих соображений?

1) То, что Вы привязали приложение к одному ядру, не связывает ось: в частности, ядро может продолжать фурычить, а драйвера — обрабатывать прерывания параллельно с приложением.

2) Из Вашего сообщения не ясно, были ли те же проблемы на многоядерном процессоре в builder'е 5.

3) Одна из особенностей многоядерного исполнения — это соревнования и блокировки, остававшиеся незамеченными при одном ядре. Я бы это исключил (так же как и исправляемую без синхронизации память), поскольку при связывании на одном ядре всё по-прежнему плохо.

4) Ещё один источник проблем — это изменение последовательности событий (сообщений) и изменение кванта таймера в многоядерном случае. Если программа не выписана очень аккуратно (включая библиотеку builder'а), то проблемы очень даже возможны.

 Профиль  
                  
 
 
Сообщение10.04.2008, 15:44 


21/03/06
1545
Москва
незваный гость писал(а):
Не обидитесь, если выскажу несколько общих соображений?

Конечно нет!

незваный гость писал(а):
Из Вашего сообщения не ясно, были ли те же проблемы на многоядерном процессоре в builder'е 5.

Хех... я допустил ошибку: изменил две вещи сразу... Дело в том, что старый комп вышел из строя, а на новом я сразу поставил Builder 6 (давно собирался). Однако, взяв у коллеги комп на базе старенького Pentium M (мой старый процессор тоже был из этого семейства), и запустив на нем бинарник (без перекомпиляции), все работало стабильно часами.

незваный гость писал(а):
Ещё один источник проблем — это изменение последовательности событий (сообщений) и изменение кванта таймера в многоядерном случае. Если программа не выписана очень аккуратно (включая библиотеку builder'а), то проблемы очень даже возможны.

Это здравое предположение...

В общем, я пока ковыряюсь в программе, благо сам ее писал полностью, и имею доступ ко всему коду, кроме, конечно, библиотечных функций. Ни с того ни с сего сбои стали происходить значительно реже (работает минуты и даже по пол часа)...

Если найду, в чем была зачада - обязательно напишу.

Меня удивляет такое соображение: ни в одной сторонней программе я не встречал (и даже не слышал никогда) никаких проблем в связи с переходом на многоядерность. И тут хоп - в своей собственной четко проявился подобный глюк...

Offtop:
незваный гость писал(а):
Не наблюдал (я и процессоров то многоядерных пока не видел).

Вы знаете, Core2Duo действительно очень быстрые процессоры. Настолько, что я прошлым летом заморочился, прочитал все по разгону, купил Quad (он тогда удачно подешевел до 266$), и собрал дома конфетку 4 ядра по 3,5 Ггц. Мегадоволен остался. В общем, могу только порекомендовать это семейство процессоров Intel, оно вышло действительно удачным.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group