Здравствуйте, Slava Antonov, Вы писали:
SA>Hello HAS, you wrote:
>>> Данная проверка бессмысленна, т.к. EnterCriticalSection ГАРАНТИРУЕТ, что данный блок выполняется только одним потоком. >> тогда почему срабатывает данное исключение?
SA>Какое исключение?
>>> Что не работает? >> вроде как работает, но: один раз может отработать без задоринки, в другой раз может просто выдать "out of memory", в третий — подвиснуть... причем пытался уже статически задавать последовательность страниц, та же история...
SA>Это нужно смотреть что у вас в ParsePage(Thread->Page);
на данный момент там PushPage(Addresses[random(AddressCounts)]); т.е. просто добавление страницы в очередь
>>> Кроме того, критическую секцию нужно ставить не на всю функцию, а только на те места где идет обращение в разделяемым ресурсам, т.е. ресурсам к котором возможен доступ из нескольких потоков. >> а как быть если мне необходимо, чтобы весь этот блок кода был выполнен без прерывания одним потоком, т.е. чтобы в этом блоке в ходе выполнения не было переключения между потоками?
SA>Зачем? Какой вам тогда вообще смысл в многопоточности если вы ее накорню прибиваете.
почему? каждый поток по идее может занимать в работе длительное время, т.е. грубо аналог: Teleport Pro — какие-то страницы могут быть недоступны и поток будет ждать таймаута, в то вермя как другой поток в это время скачает другую страницу...
Чем же я прибиваю многопоточность?
SA>-- SA>Всего хорошего, Слава SA>ICQ: 197577902