проведите кто-нибудь ликбез по потокам ))
такие вот вопросы... есть у меня в программе функции обработки картинок... если их вынести в отдельные потоки, будут ли задействованны вторые там ядра у новых процессоров?
(под делфи 2005)
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| Snake_B |
Сообщение
#1
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: 0 |
проведите кто-нибудь ликбез по потокам ))
такие вот вопросы... есть у меня в программе функции обработки картинок... если их вынести в отдельные потоки, будут ли задействованны вторые там ядра у новых процессоров? (под делфи 2005) |
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
Цитата Это в идеале, так то ты и на одноядерном можешь сколько хочешь потоков создать А теперь - внимание, вопрос: А сколько это - в пределах разумного? Теперь по теме: Цитата по хорошему получается надо определять индивидуально сколько этих самых По хорошему - получается, что ПРОСТО ТАК создавать ничего не надо, тем более на одноядернике. Увеличить скорость не получится однозначно, скорость только уменьшится, зачем тебе проблемы? Определяй количество ядер/процессоров на машине (если что - можно прочесть системную переменную NUMBER_OF_PROCESSORS), и создавай поток(-и), обрабатывающие информацию только если это число больше 1. Больше конкретики, если можно, что за потоки, какую задачу выполняют? Чего ты вдруг решил что-то выносить в отдельный поток?"число ядер * количество процессоров" есть и столько потоков создавать... так? Цитата сейчас ещё есть отправка отчетов всяких на e-mail... программа во время отправки зависает... Программа зависает по какой причине? Потому что долго выполняется и потом, когда отправится - все-же "отвисает"? Или зависло, и с концами? Если "отвисает" - то выноси в отдельный поток. Цитата но если сделать в потоке, я же его остановить не смогу если что? или смогу? Если "что"? Поток должен сам знать, когда ему завершиться, а когда - нет. Когда завершится - тогда и завершится. Если правильно напишешь Execute - будет работать правильно. Откуда ты собрался "если что" его останавливать?Добавлено через 1 мин. Цитата Попробуй int64.. Не надо... Опять нарушаем сигнатуру функции?Цитата DWORD WINAPI GetTickCount(void); |
| Snake_B |
Сообщение
#3
|
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 72 Пол: Мужской Репутация: 0 |
Теперь по теме: По хорошему - получается, что ПРОСТО ТАК создавать ничего не надо, тем более на одноядернике. Увеличить скорость не получится однозначно, скорость только уменьшится, зачем тебе проблемы? Определяй количество ядер/процессоров на машине (если что - можно прочесть системную переменную NUMBER_OF_PROCESSORS), и создавай поток(-и), обрабатывающие информацию только если это число больше 1. Больше конкретики, если можно, что за потоки, какую задачу выполняют? Чего ты вдруг решил что-то выносить в отдельный поток? программа сжимает изображения в папке... решил выносить, чтобы на многоядерных работала (сжимала) быстрее... Программа зависает по какой причине? Потому что долго выполняется и потом, когда отправится - все-же "отвисает"? Или зависло, и с концами? Если "отвисает" - то выноси в отдельный поток. не.... потом нормально отвисает... как отправит... оно в общем не критично, просто счас с gprs сижу и оно заметно... а так вроде нормально... а выносить в поток... а если за это время пользователь закроет программу... ладно... думаю и так нормально... Если "что"? Поток должен сам знать, когда ему завершиться, а когда - нет. Когда завершится - тогда и завершится. Если правильно напишешь Execute - будет работать правильно. Откуда ты собрался "если что" его останавливать? там просто сейчас ни чего нет, просто форма с надписькю "отправка".... а если делать работу с интерфейсом, то надо делать "отмену"... возюкатся долго, а смысла особого нет, тем более что ну очень уж реко она используется... Добавлено через 1 мин. Не надо... Опять нарушаем сигнатуру функции? , вот и пользуй DWORD... гм... а я уже переделал... работает всё... а с DWORD опять поплыло куда то... не верные значения выдает... может уж, работает, да и фиг с ним? )) Сообщение отредактировано: Snake_B - |
Snake_B вопросы по потокам.... 17.09.2010 3:25
volvo Будут. И вторые, и третьи, и четвертые. Этим заним… 17.09.2010 4:25
Snake_B
Будут. И вторые, и третьи, и четвертые. Этим зани… 17.09.2010 4:55
Snake_B
Будут. И вторые, и третьи, и четвертые. Этим зани… 19.09.2010 17:56
volvo Сколько нужно, столько и создавай. Потоки - они не… 19.09.2010 18:16
Snake_B
Сколько нужно, столько и создавай. Потоки - они н… 20.09.2010 3:54
Unconnected На одноядерном ускорится что-то вряд ли, просто уд… 20.09.2010 4:24
Snake_B и снова вопросы ))
не совсем про потоки... но дума… 11.10.2010 16:17
мисс_граффити а "узкое место", думаешь - процессор? не… 11.10.2010 16:40
Snake_B
а "узкое место", думаешь - процессор? н… 11.10.2010 16:47
TarasBer > программа сжимает изображения в папке...
А п… 11.10.2010 23:36
Snake_B
> программа сжимает изображения в папке...
А … 12.10.2010 4:28
TarasBer У меня тут нет DRKB и канал маловат, чтоб лишние 1… 12.10.2010 12:33
Snake_B > Кстати, алгоритм из DRKB умеет бороть лесенки… 13.10.2010 3:26
volvo Вопрос не в оптимизации, если что. Вопрос - почему… 12.10.2010 14:07
Snake_B
Здесь дело в другом. Видно, какие-то системные фу… 2.01.2011 19:52
TarasBer > Так что тут надо смотреть всю программу, а не… 12.10.2010 14:29
volvo Я надеюсь, хотя бы BeginUpdate/EndUpdate для Memo … 2.01.2011 20:11
Snake_B
Я надеюсь, хотя бы BeginUpdate/EndUpdate для Memo… 2.01.2011 20:31![]() ![]() |
|
Текстовая версия | 6.11.2025 21:02 |