RE: [sisyphus] Как ускорить работу с потоками?
Boronin Sergey
=?iso-8859-1?q?analisys_=CE=C1_quality=2Es2=2Eru?=
Вт Авг 31 11:32:51 MSD 2004
Спасибо, я уже сам нашел причину проблемы. Я использовал в основе своего
класса для разруливания блокировок кроссплатформенную версию
TMultiReadExclusiveWriteSynchronizer, которая по-разному работает в
виндах и линуксе. В виндах BeginRead, работает так, как следует из его
названия, а в линуксе, реализации BeginRead и BeginWrite одинаковы и
используют _phtread_mutex (из библиотеки libc), отсюда и разность в
поведении. После того, как я это учел, все заработало нормально и с
нормальной скоростью, так что это была моя ошибка.
Так что проблема решена, спасибо.
Интересная особенность, что при попытке создания 1015 потоков в линуксе,
выдается exception, при том, что в винде и 8000 потоков нормально
отрабатывали, хотя и медленно. Не знаете с чем это может быть связано?
С уважением,
Боронин Сергей
-----Original Message-----
From: Gleb Kulikov [mailto:glebus на asd.iao.ru]
Sent: Monday, August 30, 2004 9:07 PM
To: analisys на quality.s2.ru; ALT Linux Sisyphus discussion list
Subject: Re: [sisyphus] Как ускорить работу с потоками?
В сообщении от Понедельник 30 Август 2004 18:29 Boronin Sergey написал:
> и то, только поле того, как завершаться все читающие потоки, этакий
> аналог TMultiReadExclusiveWriteSynchronizer, но с поддержкой вложенных
> блокировок(может вкладываться несколько блокировока на чение и только
> Вопрос: «Почему так и как это побороть?»
Поподробнее, как реализована блокировка?
--
Салют, /GLeb
UIN: 15341920
jabber://gleb@asd.iao.ru
netmail: 2:5005/78
Подробная информация о списке рассылки Sisyphus