powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потокобезопасное использование потоконебезопасных коллекций
25 сообщений из 145, страница 2 из 6
Потокобезопасное использование потоконебезопасных коллекций
    #38757278
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Иными словами, ты теоретизируете. На практике такой код 100% рабочий.Это не я теоретизирую. Это MSDN просит вас писать код в соответствии с моделью памяти. Если вы считаете, что забивать на советы разработчиков платформы - ваше право. Писать говнокод - ваше право. Но пожалуйста - не надо советовать писать говнокод другим людям .
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757291
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свеном, так дай ТСу пример хорошего кода, решающего его проблему. Ну или ссылку на почитать.
Пока твои выпады выглядят толсто и бессмысленно.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757300
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA ,
Что ему советовать? Он итак прекрасно знает, что надо использовать Concurrent* классы, перечитайте его вопрос. Вопрос был в том, можно ли как-то расслабить это в его сценарии. Ответ простой - нет, нельзя.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757306
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv skyANA ,
Что ему советовать?Ссылку на почитать.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757309
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСсылку на почитать.Может быть еще и прочитать за него? У меня такое ощущение, что вам лишь бы что-то сказать, но что бы это было сказано последним.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757311
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvто ему советовать? Он итак прекрасно знает, что надо использовать Concurrent* классы, перечитайте его вопрос. Вопрос был в том, можно ли как-то расслабить это в его сценарии. Ответ простой - нет, нельзя.
Как нельзя? Зачем же вы советовали volatile? Неужто эксперт дал бессмысленный совет? Или не в состоянии привести с ним корректный пример?

Расскажите, как эксперт, поможет ли применение барьеров памяти в моем коде?
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757313
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cdtyjvУ меня такое ощущение, что вам лишь бы что-то сказать
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757319
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79cdtyjvто ему советовать? Он итак прекрасно знает, что надо использовать Concurrent* классы, перечитайте его вопрос. Вопрос был в том, можно ли как-то расслабить это в его сценарии. Ответ простой - нет, нельзя.
Как нельзя? Зачем же вы советовали volatile? Неужто эксперт дал бессмысленный совет? Или не в состоянии привести с ним корректный пример?

Расскажите, как эксперт, поможет ли применение барьеров памяти в моем коде?
я думаю есть смысл сделать свою обертку на queue, где будет синхронизирован доступ и всякие Count как раз volitale. Хотя значение этого слова свеном явно преувеличивает. Кстати такая обретка у меня где-то была. В те далекие Net 2.0 ей пользовался)
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757320
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvskyANAСсылку на почитать.Может быть еще и прочитать за него? У меня такое ощущение, что вам лишь бы что-то сказать, но что бы это было сказано последним.Нет читать он сам будет.
В сухом остатке, что ты написал: volatile, MSDN.
Ну воспользуется ТС поиском в MSDN, ну получит "Results 1-20 of about 79,900 for: volatile c#". Забьёт.

P.S.: я в отпуске, раскладываю вещи после возвращения из Крыма и стирки.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757321
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот нашел. файл прикладываю. там даже все по науке. Свеному понравится
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757329
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanвот нашел. файл прикладываю. там даже все по науке. Свеному понравится

http://www.sql.ru/forum/actualfile.aspx?id=16620467] Приложенный файл (NewQueue.cs - 5Kb)
Ну это не обёртка, а свой класс :-) Выбивается за рамки топика. Вопрос то был про обычную Queue

Может, имело смысл унаследоваться от Queue, переопределить свойство через new, а бакэнд поле сделать volatile? Пока иных применений этому слову я не вижу.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38757335
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79netivanвот нашел. файл прикладываю. там даже все по науке. Свеному понравится

http://www.sql.ru/forum/actualfile.aspx?id=16620467] Приложенный файл (NewQueue.cs - 5Kb)
Ну это не обёртка, а свой класс :-) Выбивается за рамки топика. Вопрос то был про обычную Queue

Может, имело смысл унаследоваться от Queue, переопределить свойство через new, а бакэнд поле сделать volatile? Пока иных применений этому слову я не вижу.
ну да. я просто забыл даже как там было сделано :) Но помойму проще всего в "лоб" lock(sync) на все операции. Откровенно говоря "тормоза" от этого вряд ли будут заметны
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758174
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А эти Concurrent не сильно много производительности и потребления памяти используют, по сравнению с не Concurrent?

У меня не библиотека и не какой-то код, от которого кто-то наследоваться будет. У меня однозначно в одном потоке добавляются данные в очередь, а в другом - берутся из неё.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758175
НемоКэп42
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НемоКэп42А эти Concurrent не сильно много производительности и потребления памяти используют, по сравнению с не Concurrent?
Они там вообще как построены? Может, на банальных lock'ах?
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758176
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НемоКэп42НемоКэп42А эти Concurrent не сильно много производительности и потребления памяти используют, по сравнению с не Concurrent?
Они там вообще как построены? Может, на банальных lock'ах?Возьмите JustDecompile, да посмотрите. Память Вам тоже никто замерить не запрещает.
Мы же не знаем где и как Вы у себя очереди используете.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758184
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAВозьмите JustDecompile, да посмотрите. Память Вам тоже никто замерить не запрещает.
Мы же не знаем где и как Вы у себя очереди используете.Какой еще JustDecompile? Во-первых, если уж брать дизассемблер, то ILSpy, а не эту фигню. Во-вторых, что бы посмотреть исходники mscorlib, достаточно просто открыть Гугл, и вбить там ".net reference source".
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758223
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvskyANAВозьмите JustDecompile, да посмотрите. Память Вам тоже никто замерить не запрещает.
Мы же не знаем где и как Вы у себя очереди используете.Какой еще JustDecompile? Во-первых, если уж брать дизассемблер, то ILSpy, а не эту фигню. Во-вторых, что бы посмотреть исходники mscorlib, достаточно просто открыть Гугл, и вбить там ".net reference source".

У меня решарпер открывает исходники. По возможности, качает, если нет - декомпилирует
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758237
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivanвот нашел. файл прикладываю. там даже все по науке. Свеному понравится
Посмотрел код.
1. Непонял зачем выкрутасы в Enqueue
Код: c#
1.
2.
3.
oldTail = _tail; 
oldTailNext = oldTail.Next; 
if (_tail == oldTail)  // Optimisation can remove comparission


2. Непонял зачем страдания в TryDequeue. Достаточно уменьшить _count.
3. проблемы с памятью. добавь и удали один елемент. остаётся живая ссылка.
4. сильно не проверял но т.к. _tail может содержать ссылку не на последний елемент списка, то вся конструкция вызывает сомнения.

Ну а в обшем пример показательный. чаше проще lock-ат обект чем написать беошибочный код.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758267
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron,
по первому, в код не вникал, но наверное проверка что не залез кто то из другого потока,
по остальному, при беглом взгляде в сети данный код используется в около сотни проектах, наверное можно его считать верифицированным ( условно)
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758381
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netivan ,
Ага, настолько по науке, что на любой Enqueue делается минимум по два CAS-а, есть дополнительный cmpxchg и race condition на никому не нужном _count, а Clear() не потокобезопасен. Мрак.
Смотрите в Java, класс ConcurrentLinkedQueue - именно так должна выглядеть эффективная потокобезопасная очередь.
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758384
cdtyjv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хахаха, так у вас еще и члены класса не волатильные. То есть вообще никаких гарантий в многопоточно окружении у вас нет. Вердикт - на помойку, СРОЧНО !
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758490
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv netivan ,
Ага, настолько по науке, что на любой Enqueue делается минимум по два CAS-а, есть дополнительный cmpxchg и race condition на никому не нужном _count, а Clear() не потокобезопасен. Мрак.
Смотрите в Java, класс ConcurrentLinkedQueue - именно так должна выглядеть эффективная потокобезопасная очередь.
какой-то ты набор слов написал непонятный. Мне срать что там в яве, человек просил кастомный класс ему скинул.
авторХахаха, так у вас еще и члены класса не волатильные. То есть вообще никаких гарантий в многопоточно окружении у вас нет. Вердикт - на помойку, СРОЧНО! напиши идеальный, оценим
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758495
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvskyANAВозьмите JustDecompile, да посмотрите. Память Вам тоже никто замерить не запрещает.
Мы же не знаем где и как Вы у себя очереди используете.Какой еще JustDecompile? Во-первых, если уж брать дизассемблер, то ILSpy, а не эту фигню. Во-вторых, что бы посмотреть исходники mscorlib, достаточно просто открыть Гугл, и вбить там ".net reference source".Свеном, я посоветовал новичку, что по проще. У тебя какие-то проблемы?
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758499
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjvХахаха, так у вас еще и члены класса не волатильные. То есть вообще никаких гарантий в многопоточно окружении у вас нет. Вердикт - на помойку, СРОЧНО !

Критиковать каждый горазд, особенно старый код под .net2. Мы ждем вашего кода. С volatile в пределах заданного ТС коридора.

Кстати, товарищ эксперт, если мой код исправить так, вас это устроит?

Код: c#
1.
2.
3.
4.
5.
6.
if ( 0 != Thread.VolatileRead(queue.Count) ) {
    lock(queue) {
        if ( 0 != Thread.VolatileRead(queue.Count) )
            var msq = queue.Dequeue();
    }
}



Зачем нам смотреть в Java, когда есть ConcurrentQueue и его исходники? Чем он так плох?
...
Рейтинг: 0 / 0
Потокобезопасное использование потоконебезопасных коллекций
    #38758500
netivan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cdtyjv,

и еще для тупых и слепых:
Код: c#
1.
2.
3.
4.
 public int Count
    {
        get { return Thread.VolatileRead(ref _count); }
    }


авторСвеном, я посоветовал новичку, что по проще. У тебя какие-то проблемы?
да чего с него взять? Он наверное в блокноте пишет, он же гуру. и компилит все в мозгу своем.
...
Рейтинг: 0 / 0
25 сообщений из 145, страница 2 из 6
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Потокобезопасное использование потоконебезопасных коллекций
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]