Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВЯ тебе про то, что есть список задач и нельзя выполнить задачу N+1 не зная результата для N и так для всего списка. Ну если у тебя весь стек задач так устроен, то да. А если 1 задача из 100 задач не зависит ни от чего, то почему бы её не распаралелить? ЕвгенийВДешевый пиар ресурса. Какой ресурс, такой и пиар :) Дешевый вброс бреда от ЕвгенийВ. Ничего ресурс винить из-за собственного криворучия :) ЕвгенийВТы путаешь Божий дар с яичницей! Запустить алгоритм в отдельном потоке - не значит распараллелить его. Собственно, и наоборот, распараллелить - это не значит использовать отдельный поток. Может быть задействован как и поток из пула, так и асинхронный вызов. Но мы не о том. Какая тебе разница, выполнится ли блок асинхронно или в отдельном треде? Отдай эту работу отдельным механизмам фреймворка. И ты получишь результат. ЕвгенийВИли там генератор всех возможных программ на C#. А в чем проблема? [/quot] Я например не могу, просвети, покажи код?[/quot] Причем тут могу или не могу? Обрисуй задачу, опиши проблемы. А потом обсудим решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 14:50 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Четыре: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 14:51 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
skyANA , И в чем суть? Вы проверку размера внесли внутрь лока, разумеется все работает в таком случае. Мы говорим про вот этот код: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. Опять написали, не подумав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 14:57 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
skyANA , Вторая ошибка - вы компилируете по x86. У меня мой код под эту платформу тоже работает. А под x64 нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 14:58 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
codearticles.ruНу если у тебя весь стек задач так устроен, то да. У Эрика да. codearticles.ruСобственно, и наоборот, распараллелить - это не значит использовать отдельный поток. Может быть задействован как и поток из пула, так и асинхронный вызов. Но мы не о том. Какая тебе разница, выполнится ли блок асинхронно или в отдельном треде? Отдай эту работу отдельным механизмам фреймворка. И ты получишь результат. Еще раз повторяю, напиши алгоритм получения чисел Фибоначи, который при своем вычислении будет использовать все ядра процессора. ЕвгенийВПричем тут могу или не могу? Обрисуй задачу, опиши проблемы. А потом обсудим решение. Напиши метод с сигнатурой IEnumerable<string> GetAllProgramms(), который вернет список ВСЕХ возможных программ на C#, в том числе которые были приведены в этом обсуждении, в этом форуме, которые написал ты, которые написали все, кого ты знаешь и т. д. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:03 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВcodearticles.ruНу если у тебя весь стек задач так устроен, то да. У Эрика да. Откуда знаешь? ЕвгенийВЕще раз повторяю, напиши алгоритм получения чисел Фибоначи, который при своем вычислении будет использовать все ядра процессора. Ты прямо жжешь с каждым постом. Сначало было: ЕвгенийВНапиши например "банальный многопоточный" генератор чисел Фиббоначи. Дал код на джаве. Теперь ты вбрасываешь: ЕвгенийВнапиши алгоритм получения чисел Фибоначи, который при своем вычислении будет использовать все ядра процессора. А потом будет: напиши алгоритм получения чисел Фибоначи, который при своем вычислении будет использовать свечения луны и силу маха крыльев всех бабочек Земли. Так? Причем тут процессор? Откуда он взялся? Речь была о малтитрединге и в частности о распараллеливании. Выйди из сумрака. ЕвгенийВПричем тут могу или не могу? Обрисуй задачу, опиши проблемы. А потом обсудим решение. Напиши метод с сигнатурой IEnumerable<string> GetAllProgramms(), который вернет список ВСЕХ возможных программ на C#, в том числе которые были приведены в этом обсуждении, в этом форуме, которые написал ты, которые написали все, кого ты знаешь и т. д. :)[/quot] Ты бредишь? Я вижу, что да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:11 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Свеном, причем здесь твой код с локальной переменной? Твоя хваленая волатильность работает для полей, а не переменных: Ключевое слово volatile можно применить только к полям класса или структуры. Локальные переменные не могут быть объявлены как volatile (цитата из MSDN) Так что все у skyANA правильно, через lock. Что имеется ввиду под статическим враппером - не знаю, но все работает не только для static полей, но и для остальных тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:13 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Arm79Свеном, причем здесь твой код с локальной переменной? Твоя хваленая волатильность работает для полей, а не переменных: Ключевое слово volatile можно применить только к полям класса или структуры. Локальные переменные не могут быть объявлены как volatile (цитата из MSDN)Вы уже окончательно запутались. Вы читаете неволатильное поле Queue.count - в этом ваша ошибка. Так как оно неволатильно, ваш код и не работает. Arm79Так что все у skyANA правильно, через lock.Вот именно, что у него все правильно написано, потмоу и работает. А у вас нет, потому код не работает. Arm79Что имеется ввиду под статическим враппером - не знаю, но все работает не только для static полей, но и для остальных тоже.У вас работает. А на других окружениях нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:25 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Да уж, алгоритмическая подготовка - хуже чем плохо :( codearticles.ruДа что ты говоришь http://codearticles.ru/articles/2492 Кстати, этот код еще подойдет для начального ознакомления с тасками, чего впрочем хватает для того, что бы в простейшем случае отделить рабочий поток от гуя, рисованием которого автор видимо и занимается большую часть времени. Но каждый здравомыслящий программист видит, что если независимых групп, на которые можно разделить имеющиеся задачи превышает количество ядер процессора, то за такое распараллеливание надо молотком по пальцам! codearticles.ruТы бредишь? Я вижу, что да. С твоей колокольни - да. С колокольни пишущих компиляторы - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:37 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
cdtyjvArm79Свеном, причем здесь твой код с локальной переменной? Твоя хваленая волатильность работает для полей, а не переменных: Ключевое слово volatile можно применить только к полям класса или структуры. Локальные переменные не могут быть объявлены как volatile (цитата из MSDN)Вы уже окончательно запутались. Вы читаете неволатильное поле Queue.count - в этом ваша ошибка. Так как оно неволатильно, ваш код и не работает. Arm79Так что все у skyANA правильно, через lock.Вот именно, что у него все правильно написано, потмоу и работает. А у вас нет, потому код не работает. Arm79Что имеется ввиду под статическим враппером - не знаю, но все работает не только для static полей, но и для остальных тоже.У вас работает. А на других окружениях нет. Я не понял? :-) Еще раз, если очередь - это поле, неважно, статическое или нет, с ним все прекрасно работает. Собственно, код, который я привел, это иллюстрирует. Если вы объявляете локальную переменную и с ней занимаетесь ерундой типа замыканий, у вас проблемы. Далее, вы же говорили, что нужно использовать волатильность? Но почему примеры у вас без неё? Может, потому что локальные переменные и volatile несовместимы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:37 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВДа уж, алгоритмическая подготовка - хуже чем плохо :( Не говори. Формулирование требований и внятность изъяснения - в уверенном минусе. ЕвгенийВКстати, этот код еще подойдет для начального ознакомления с тасками, чего впрочем хватает для того, что бы в простейшем случае отделить рабочий поток от гуя, рисованием которого автор видимо и занимается большую часть времени. А почему ты считаешь, что отделение рабочего потока от гуя - детская задача? Вот, выше твой афтар даже пишет, что и такого пороха не нюхал. А ты его тут иконой ставишь. Так что не рассказывай мне про детский сад, загляни к себе в карман и найдешь кучу погремушек и даже соску. ЕвгенийВНо каждый здравомыслящий программист видит, что если независимых групп, на которые можно разделить имеющиеся задачи превышает количество ядер процессора, то за такое распараллеливание надо молотком по пальцам! Садись, двойка. Количество процессоров тут второстепенно, важнее, сколько потоков на процесс я могу заполучить. Готов тебя разочаровать, 32-битный процесс с дефолтным адресным пространством может создать максимум 2048 потоков. А теперь рассказать про лимиты x64? Если у тебя несколько десятков, а то и сотен, "блоков" - смело параллель их и ни о чем не думай. Твои познания в этой области ниже плинтуса. ЕвгенийВС твоей колокольни - да. С колокольни пишущих компиляторы - нет. Выдыхай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 15:46 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
codearticles.ruСадись, двойка. Количество процессоров тут второстепенно, важнее, сколько потоков на процесс я могу заполучить. Готов тебя разочаровать, 32-битный процесс с дефолтным адресным пространством может создать максимум 2048 потоков. А теперь рассказать про лимиты x64? Если у тебя несколько десятков, а то и сотен, "блоков" - смело параллель их и ни о чем не думай. Твои познания в этой области ниже плинтуса. Запусти у себя хоть столько. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Отпишешься, после перезагрузки "резетом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:13 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
codearticles.ruЕсли у тебя несколько десятков, а то и сотен, "блоков" - смело параллель их и ни о чем не думай. А объясните пожалуйста, в чем смысл такого параллеливания, все равно ведь не удастся повысить производительность больше, чем количество ядер процессора? Или я ошибаюсь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:16 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
zzА объясните пожалуйста, в чем смысл такого параллеливания, все равно ведь не удастся повысить производительность больше, чем количество ядер процессора? Или я ошибаюсь? Если выполняются ресурсоёмкие вычисления, то получим сильную конкуренцию между потоками, большие затраты на переключение контекста и как следствие результаты худшие, чем при последовательной обработке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:24 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВЗапусти у себя хоть столько. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Отпишешься, после перезагрузки "резетом". Запусти это. Отпишись, как получишь количество разных тредов, большее, чем число процессоров Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:27 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
zzcodearticles.ruЕсли у тебя несколько десятков, а то и сотен, "блоков" - смело параллель их и ни о чем не думай. А объясните пожалуйста, в чем смысл такого параллеливания, все равно ведь не удастся повысить производительность больше, чем количество ядер процессора? Или я ошибаюсь? Это исключительный случай, когда распараллеливание ничем не поможет. Должна быть хоть одна задача, которая не зависит от предыдущих. Тогда имеет смысл параллелить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:28 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
cdtyjv skyANA , Вторая ошибка - вы компилируете по x86. У меня мой код под эту платформу тоже работает. А под x64 нет.Скриншот внимательно смотри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:29 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, и да, объяснять разницу, между логическими и физическими процессорами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:34 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Это так, к слову. Код: c# 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:37 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
codearticles.ru Запусти это. Отпишись, как получишь количество разных тредов, большее, чем число процессоров Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Так ты делай какую нибудь полезную работенку? Хоть например дергай главного пользователя своего сайта из базенки по ID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 16:54 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВТак ты делай какую нибудь полезную работенку? Хоть например дергай главного пользователя своего сайта из базенки по ID? Да какая разница, напиши вместо Task.Yield тот же Task.Delay(10). И еще, когда последний раз букварь читал про ParallelOptions.MaxDegreeOfParallelism? Перечитай его еще разок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:01 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Всё дело в дефолтной установке ThreadPool.GetMinThreads, а не в количестве процессоров Тебя снова подвела безграмотность. P.S. Тем более нужно сразу говорить, что речь о логических процессорах. Чтобы не вводить никого в заблуждение. Итак, вернемся к нашим баранам :) Вот тут ты ляпнул глупость: ЕвгенийВНо каждый здравомыслящий программист видит, что если независимых групп, на которые можно разделить имеющиеся задачи превышает количество ядер процессора, то за такое распараллеливание надо молотком по пальцам! Теперь ты согласен, что "надо молотком по пальцам" тебя, а не кого-то там другого? Имей честно признать, что ты слил. Честно признайся в некомпетентности и я отпущу тебя с миром. Покайся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:17 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, Делай что нибудь полезное, а не жди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 17:52 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
cdtyjv skyANA , Вторая ошибка - вы компилируете по x86. У меня мой код под эту платформу тоже работает. А под x64 нет. Мне просто интересно, на каких процессорах ты тестируеш? Тероретически на Итаниумах таки да, запись/увеличение счётчика не синхонизирует кеш лайнс. На Х86 кеши всегда когерентны. но вроде не всегда на АМД64. У них более слабая модель памяти чем Х86 но более строгая чем на итаниумах. Что за железо? А то выяснится, что как ты не показывай проблему, у всех интелы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 18:36 |
|
||
|
Потокобезопасное использование потоконебезопасных коллекций
|
|||
|---|---|---|---|
|
#18+
Arm79Я не понял? :-) Еще раз, если очередь - это поле, неважно, статическое или нет, с ним все прекрасно работает. Собственно, код, который я привел, это иллюстрирует. Если вы объявляете локальную переменную и с ней занимаетесь ерундой типа замыканий, у вас проблемы. Вот этот код не работает, хоть очередь и "поле": Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. Если же сделать поле статическим, то код начинает работать. Это нормально, по-вашему, писать такой код, который работает или не работает по непонятным причинам? Arm79Далее, вы же говорили, что нужно использовать волатильность? Но почему примеры у вас без неё? Может, потому что локальные переменные и volatile несовместимы?Потому что мои примеры не демонстрируют корректное решение. Они демонстрируют некорреткность вашего решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2014, 19:07 |
|
||
|
|

start [/forum/topic.php?fid=20&msg=38759243&tid=1402419]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 279ms |

| 0 / 0 |
