Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Как разбить процессы по потокам? Если можно, то поподробнеее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 18:24 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
и такие люди не дай бог работают программерами в отстойник! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 18:28 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
C:\Program Files\Borland\Delphi7\Demos\Threads\ отличная демка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2003, 18:30 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Amor процесс по потокам... ты хоть сам понял что сказал? Если что, процессу не выделяется время... процесс и поток это раные сущности... sv Не рекомендую использовать класс TThread. Несколько раз наталкивался в книгах на сообщения о его глючности. А выловить глюк в многопоточном приложении... так это проще удавиться. Я пользуюсь API функциями Windows. например CreateThread... И сопутствующие ей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 07:39 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
To: StarWind А можно подробней?! Я сейчас занимаюсь подробным изучением класса Thread... Было бы очень здорово, если ссылки кинешь на статьи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 10:42 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
To: StarWind А можно подробней?! Я сейчас занимаюсь подробным изучением класса Thread... Было бы очень здорово, если ссылки кинешь на статьи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 10:42 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
на что подробнее? про глюки я читал, где не помню и сам не рискнул проверять. Посмотрел когда на апи виндов, мне показалось что так работать проще. посмотри хелп по CreateThread и сопутствующие ей функции, думаю многое станет понятно. Можно почитать практически в любой книге, где описаны потоки. Вот например как можно организовать запуск функции класса в отдельном потоке. Создается объект Disp.DispQueue в котором есть интересующая нас функция и выполняем Код: plaintext 1. 2. 3. 4. 5. 6. 7. а если использовать класс дельфи, то пишешь наследнка класса, где переопределяешь метод Execute, которым и является функция потока. Создаешь класс, и в зависимости от параметра при создании, у тебя поток либо сказу запускается либо ждет команды Resume. Тонкость, потоки хорошо работают и не доставляют хлопот пока они не пользуются общими данными. Как только они начинают пересекаться по данным, нужно синхронизировать потоки. Средства синхронизации: критическая секция, события, мьютексы, семафоры. В зависимости от ситуации используется тот или иной способ синхронизации. Внутри одного процесса, как правило чаще всего используется наиболее быстрый механизм это критические секции. Между процессами это мьютексы, делают примерно тоже, с некоторыми отличиями Ну вот если кратенько, то все ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 11:14 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
а подробно изучать в этом классе нечего глючат в нем встроенные средства синхронизации, причем под одной виндой нормально, под второй траблы. полюс мне не понравилось что событие onTerminate пропогандируется как выполняющееся в контексте главного потока, а реально нет, так же как и метод terminate не развязан средствами синхронизации. Единственный метод которому я пока не нашел аналог в api (может потоому что и не пытался искать) так это sinhronyze. Но тут обойти api виндов невозможно, а по тому значит существует и апишная функция, да и к тому же более гибкая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 11:20 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Speaker прекрасная ссылка, все по русски и красиво ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 11:21 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Кто-нибудь еще сталкивался с глюками в TThread? Интересно было-бы узнать. нашел вот про Delphi 6 о Delphi 7 ничего нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 13:43 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Интересно, а в чем проявляются глюки? Я, правда, не испробовал все случаи применения потоков, но - в тех приложениях, где использовал, глюков не было. Причем и под W95, и под NT/2k. Использовал критические секции и события. Да в исходниках у Борланда, в общем, все тоже - CreateThread, InitializeCriticalSection... ... выловить глюк в многопоточном приложении... так это проще удавиться .. Кстати, есть еще такая штука, как определение наиболее эффективной организации потоков... Ничуть не легче отладки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2003, 19:19 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
aag конкретно глюк с функцией WaitFor. О нем упоминается в книге "Delphi 6 и COM". По мойму как-то так называется, красная книга. Я не рискнул проверять есть они или нет, дабы потом все не переписывать и выбрал для использования API виндов, тем более что функции там все кристально чистые и понятные. а про эфективную организацию... ты имеешь ввиду чтоб они не ждали друг друга? Ну вот в текущем проекте может у меня маленько попроще, там прога выделяется в самостоятельные блоки, причем по логике и взаимодействие между ними через очередь (опять же написанную самостоятельно). Так что в моем случае немного проще, одной проблемы практически нет. Андрей GR да, обязательно почитай или по соображай, когда будешь синхронизацию изучать про взаимоблокировки, иначе можно получить очередную пачку сюрпризов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 03:03 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
Да говорю же я Вот Сорри в предыдущий раз не ту ссылку вставил! ;-) Но это только для Delphi 6 без всяких патчей. А в 7-й должно все быть ок! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 11:30 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
sv ну вот а я к тому же на пятой дельфе сижу... надо будет всеж уточнить работу метода Synchronize.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 11:39 |
|
||
|
Как разбить процессы по потокам?
|
|||
|---|---|---|---|
|
#18+
А чего его уточнять? Он в букварях хорошо описан. Создает временное невидимое окнов главном GUI-потоке, кидает ему виндовое сообщение через SendMessage с указателем на процедуру, которую надо исполнить. Как только очередь обработки сообщений дойдет до обработки этого сообщения, процедура будет исполнена. Так как SendMessage не возвращает управление, пока не получит результат, поток, вызвавший Synchronize, стоит и ждет до тех пор, пока требуемая процедура не выполниться главным потоком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2003, 12:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32249757&tid=2117103]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 461ms |

| 0 / 0 |
