Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизКак избежать гонок в потоках Найти похожие ветки
← →
Erik1 © (2005-06-02 15:17) [80]Всегда тут не по теме треплются.
Автору
Советую обратить внимание на группу функций WaitFor(MultiObject). Для опредерения необходимости запуска потоков. Допустим такую ситуацию, пишуший поток вошол в критическаю секцию и завис на обашении к сети. Вся наша система встала, даже трудно понять, что произошло. Для облегчения взвимодействия потоков применяются события и функции ожидающие этих событий. Причем событий может быть несколько, например сигнал аваийного звершения задачи.
P.S
Свой код могу выложить или выслать по почте.
← →
Alexander Panov © (2005-06-02 15:41) [81]evvcom © (02.06.05 13:54) [79]
...Во время оповещения читающий поток ждет, когда ему ОС выделит квант времени. :)
...И после того как пишущий делает свое дело, он извещает об этом читателя.
...мне нравится PostMessage, хотя по ситуации
Еще раз.
1. Если ожидающий поток ждет кванта времени, это означает, что он не назодится в сотоянии ожидания одного из объектов ядра?
2. Нахрена извещать поток, если он всего лишь "ожидает кванта времени"?
3. С какого перепугу поток вдруг начнет обрабатывать PostMessage?
---------------------
Может хватит чушь нести?
← →
Alexander Panov © (2005-06-02 15:55) [82]Прошу прощения за резкое высказывание.
Предлагаю перенести дискуссию в потрепаловку.
← →
evvcom © (2005-06-02 17:20) [83]Перенес http://delphimaster.net/view/15-1117717481/
← →
GrayFace © (2005-06-02 21:28) [84]leonidus
См. книгу Рихтера "Windows для профессионалов". По слухам, есть на http://www.podgoretsky.com
← →
GrayFace © (2005-06-02 21:40) [85]evvcom © (02.06.05 8:51) [65]
Поэтому в пишущем потоке я бы даже synchronize не стал вызывать, а использовал бы PostMessage.
Поддерживаю.
← →
Alexander Panov © (2005-06-02 23:17) [86]GrayFace © (02.06.05 21:40) [85]
Поддерживаю.
Аналогично, как и перед этим. В топике в потрепаловке есть где разгуляться.
← →
leonidus © (2005-06-03 08:27) [87]Блин вот это тред мы тут развели:) Может действительно усложнили задачу... в начале все так элегантно получалось. Я одного не пойму, если критическая секция априори допускает в себя только один поток, то значит мы этим механизмом однозначно не допустим параллельной записи и одновременного чтения из массива, что нам собственно и нужно. Но тут накладывается проблема чтения массива в произвольный момент времени. Ну так она должна решаться просто повышением приоритета читающего потока над записывающим. Т.е. если записывающий (W) уже в секции, читающий(R) все равно бессилен, но зато когда W закончит свою работу управление передасться R а не следующему W, а считав нужные данные W передаст эстафету следующему R что и требовалось доказать. Я правильно мыслю?
Страницы: 1 2 3 вся ветка
Форум: "Основная";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.6 MB
Время: 0.043 c