Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.09.08;
Скачать: CL | DM;

Вниз

Delphi-приложения на многоядерных системах   Найти похожие ветки 

 
Piligrim   (2013-04-02 08:35) [0]

Здравствуйте! Кто-нить в курсе как проги на Дельфи грузят многоядерные процы или они используют лишь одно ядро независимо от установленного камешка?


 
Павиа   (2013-04-02 08:43) [1]

Точно также как и на Си.

Сидит Билл Гейтс за компьютером. Подходит сынишка:
- Пап, а правда, что твой 98-ой многозадачный?
- Правда, сынок.
- А покажи, как эта многозадачность работает?!
- Сейчас, погоди, дискету доформатирую...

С тех пор кардинально ничего не поменялось. Графический интерфейс VCL, MFC так и остался однозначными.  
Что касается обработки данных, то если программа написана с учётом многозадачности она будет выполняться на нескольких процессорных ядрах.


 
Piligrim   (2013-04-02 08:47) [2]

А как написать прогу с учетом многозадачности? Чем она отличается от обычной в плане кодинга?


 
Piligrim   (2013-04-02 08:47) [3]

А как написать прогу с учетом многозадачности? Чем она отличается от обычной в плане кодинга?


 
Ega23 ©   (2013-04-02 08:54) [4]


> Чем она отличается от обычной в плане кодинга?

Если в плане "кодинга", то новые сочетания букаф появляются, всякие BeginThread и SetAffinityMask.
А если в плане разработки архитектуры, то надо читать умные книги и много думать.


 
MBo ©   (2013-04-02 08:55) [5]

Длительные операции выносить в отдельный поток (потоки)


 
Piligrim   (2013-04-02 09:22) [6]

Какие сайты и умные книги по написанию приложений для многоядерных систем и  многопоточности посоветуют уважаемые мастера?


 
MBo ©   (2013-04-02 09:23) [7]

Какую задачу предстоит решать?


 
Ega23 ©   (2013-04-02 09:28) [8]

ЕМНИП, у Танненбаума толково написано.


 
Павиа   (2013-04-02 10:07) [9]


> Чем она отличается от обычной в плане кодинга?

Работы больше.
1) Надо учитывать что теперь состояния могут изменяться во времени. А значит надо контролировать данные не только на входе и выходе но и в процессе обработке. А так же число состояний увеличивается в 3 раза. 3 состояния времени.
- До
- После
- текущее время.
2) Приходиться уделять вниманию планированию нагрузки. Балансировки.

Кодинг напоминает низкий уровень:
1) Внутренних средств тестирования нет.  Среда не будет подсказывать где ошибки.

Решаются эти проблемы продумыванием архитектуры и процесса разработки. По поводу шаблонов проектирования затрудняюсь сказать есть или нету.


> ЕМНИП, у Танненбаума толково написано.

Пишет толково, вот только тема ихмо гораздо шире чем у него расписано.


 
Ega23 ©   (2013-04-02 10:25) [10]


> 1) Внутренних средств тестирования нет.

Ээээ.. Чё это нет?


 
antonn ©   (2013-04-02 10:47) [11]

а что там было из проблем - "многопотоков" в dll? уже не виснет среда?


 
Ega23 ©   (2013-04-02 10:51) [12]


> а что там было из проблем - "многопотоков" в dll? уже не
> виснет среда?


А разве висла? Вроде нормально всё было, по крайней мере лет 7 назад.


 
Лукошко   (2013-04-02 11:31) [13]

2007 виснет при отладке многопоточки, интересно было б узнать по ХЕ`шкам


 
Ega23 ©   (2013-04-02 11:36) [14]


> 2007 виснет при отладке многопоточки

Именно в dll, или вообще?
Просто за "вообще" - меня терзают смутные сомнения.


 
брат Птибурдукова   (2013-04-02 11:36) [15]

XE2 не виснет. впрочем, я с многопоточностью не так уж много работал.


 
DevilDevil ©   (2013-04-02 12:35) [16]

> Здравствуйте! Кто-нить в курсе как проги на Дельфи грузят
> многоядерные процы или они используют лишь одно ядро независимо
> от установленного камешка?


однопоточные Delphi проекты работают на одном ядре
чтобы работать не нескольких ядрах - надо создавать и управлять потоками
OpenMP в Delphi нет


 
Лукошко   (2013-04-02 14:19) [17]


> Ega23 ©   (02.04.13 11:36) [14]

Необязательно в dll даже. К сожалению, постоянно виснущий код я пока не видел.
Зато есть пример 100% повторяющегося глюка D 2007: если открыть менюшку, а в это время из другого потока (можно по таймеру даже) отладчик попадёт в произвольную бряку - на окно Дельфи переключиться можно только по Win+Tab, даже Alt+Tab не помогает.
Кстати, сталкивался кто с таким поведением?


 
NoUser   (2013-04-02 15:35) [18]

> Именно в dll, или вообще?
Имеется ввиду что код потока именно в dll? Потому как и без dll там было весело.

> Кстати, сталкивался кто с таким поведением?
Уж не помню, но 2006-2007 (да и D7 вроде) при отладке многопоточки, дабы уберечь нервы, "пересел" на OutputDebugString.

А на XE+ проблем не заметил.

Кстати, коль уж тема поднята, вопрос к мастерам:
при BP в одном из потоков, IDE приостанавливает и все другие, так вот,
- нормально ли это (где-то описано) ?
- и можно ли это поведение изменить/управлять ?


 
Ega23 ©   (2013-04-02 15:56) [19]


> при BP в одном из потоков, IDE приостанавливает и все другие

Разве?


 
NoUser   (2013-04-02 16:50) [20]

как было раньше, не знаю - тогда не интересовался, а XE+, да, но не одномоментно, вроде есть небольшой перекос по таймингам.


 
Eraser ©   (2013-04-02 17:24) [21]


> Ega23 ©   (02.04.13 15:56) [19]

да, так и есть.


 
Eraser ©   (2013-04-02 17:26) [22]

основная беда VCL в плане потоков связана с графическими объектами, вроде TBitmap. сделано просто ужасно, причем до этой засады так просто не докопаешься, особенно если новичок.


 
Лукошко   (2013-04-02 19:17) [23]


> NoUser   (02.04.13 15:35) [18]
> Уж не помню, но 2006-2007 (да и D7 вроде) при отладке многопоточки, дабы уберечь нервы, "пересел" на OutputDebugString.

Аналогично, агак

> А на XE+ проблем не заметил.

Надо будет поактивнее лоббировать переезд на ХЕ, пасип.



Страницы: 1 вся ветка

Текущий архив: 2013.09.08;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.008 c
2-1355904973
sqler
2012-12-19 12:16
2013.09.08
выборка


15-1364755856
Писатель
2013-03-31 22:50
2013.09.08
Траблы с VBox, установка NC5


2-1356226571
Den
2012-12-23 05:36
2013.09.08
TEMPLATE. Как при создании события в редакторе кода сделать...


15-1364848203
Юрий
2013-04-02 00:30
2013.09.08
С днем рождения ! 2 апреля 2013 вторник


15-1364877349
Piligrim
2013-04-02 08:35
2013.09.08
Delphi-приложения на многоядерных системах