RE: [sisyphus] Как ускорить работу с потоками?
Boronin Sergey
=?iso-8859-1?q?analisys_=CE=C1_quality=2Es2=2Eru?=
Вт Авг 31 11:58:35 MSD 2004
Сорри за формулировку, насчет создания больше чем 1015 потоков проблем
нет, проблемы начинаются если все эти потоки натравить на один общий
ресурс, из которого они все хотят читать и в который все хотят писать.
Т.к. ядро рассматривает потоки так же как и процессы, но с общей памятью
и идентификатором процесса, я думаю, что это связано с тем, что ядро
опрашивает потоки (используя механизм сигналов, как и для процесссов),
чтобы определить какой из них завис.
Это так?
С уважением,
Боронин Сергей
-----Original Message-----
From: sisyphus-bounces на altlinux.ru [mailto:sisyphus-bounces на altlinux.ru]
On Behalf Of Boronin Sergey
Sent: Tuesday, August 31, 2004 11:33 AM
To: sisyphus на altlinux.ru
Subject: RE: [sisyphus] Как ускорить работу с потоками?
Спасибо, я уже сам нашел причину проблемы. Я использовал в основе своего
класса для разруливания блокировок кроссплатформенную версию
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