Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/14: Рейтинг темы: голосов - 14, средняя оценка - 4.71
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614

Многопоточность - панацея или криворукость monkey coder-ов из больших корпораций

01.10.2015, 15:44. Показов 3323. Ответов 58
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос прост:
Зачем к примеру скайпу в режиме ожидания 90 потоков?
И зачем 60 потоков FireFox с одной открытой вкладкой?
Или аж 31 поток ЛАУНЧЕРУ World of Warships при ожидании нажатия кнопки старт?
Или 70 потоков рабочему столу?
Или 30 потоков закрытому Microsoft.Photos?
Или 19 потоков калькулятору. Там кнопок меньше чем потоков. Что в нем то параллелить?
И все это хозяйство на 4 ядра. Вопрос зачем? Чтобы таск свитчинг тормозил? Ведь 99% того на что вешают потоки еще лучше будет работать в псевдопараллельном режиме. Но это как понимаю мозгами шурупать надо над иерархиями и тп а не накатать кучу кривого кода в мертвом цикле и сунуть в поток.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2015, 15:44
Ответы с готовыми решениями:

Зло корпораций или горе фреймворки
На моей первой работе, компания использовала собственный фрйемворк, на второй небольшое подобие, это было скорее похоже на примитивный...

Карты Карно - панацея или нет?..
Собственно, вопрос. Вот есть такой всем известный метод Карно, который позволяет наглядно, можно сказать графически, выявить зависимости в...

Многопоточность в передачи больших файлов
Здравствуйте, нужна помощь в многопоточности передачи данных. Проект подобия облака. Клиент отслеживает папку N, как только вней появляются...

58
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
04.10.2015, 13:19
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если заметил цель приведенного примера подвесить ось любого суперкомпутера.
Я заметил что это твои жалкие попытки как-то сгладить свой конфуз. Я бы еще понял если бы ты задался целью грохнуть стек, а так твои оппытки просто упрутся в /proc/sys/kernel/threads-max (о чем ты конечно не знаешь) и дальше все ctreat'ы вернут фейл.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
И этот код это сделает
ага, насмешил
Цитата Сообщение от korvin_ Посмотреть сообщение
в однопоточном коде достаточно бесконечного цикла
с парочкой volatile id
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.10.2015, 16:54  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
а так твои оппытки просто упрутся в /proc/sys/kernel/threads-max (о чем ты конечно не знаешь) и дальше все ctreat'ы вернут фейл.
Главное чтобы количество созданных было больше количества конвейеров.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
04.10.2015, 19:05
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Главное чтобы количество созданных было больше количества конвейеров.
Главное что ты понятия не имеешь о работе программистом за пределами своей конуры. И поэтому создаешь такие тупые темы и посты.
Grep'нул firefox на строку "int main", 1300+ матчей.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.10.2015, 19:49  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
Главное что ты понятия не имеешь о работе программистом за пределами своей конуры. И поэтому создаешь такие тупые темы и посты
Главное что имею понятие что работать программистом по найму - быть идиотом в квадрате. А мозгов нужный себе любимому софт делать хватает.

Добавлено через 1 минуту
А с количеством потоков у современного софта таки явный перебор.

Добавлено через 5 минут
К примеру для WinHTTPSendRequest и WinHTTPReceiveResponse каллбеки приходят в разных потоках для одного и того же запроса.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
04.10.2015, 20:00
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Главное что имею понятие что работать программистом по найму - быть идиотом в квадрате
Может быть ты прав, спорить не стану. Но очевидные плюсы в работе по найму есть, это колосальный опыт разработки информационных систем. Один человек такой объем просто не осилит. Вот этого опыта у тебя и нет.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А с количеством потоков у современного софта таки явный перебор.
Ты уже разобрался в исходном коде firefox?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.10.2015, 20:41  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
Но очевидные плюсы в работе по найму есть, это колосальный опыт разработки информационных систем.
Этот опыт для 90% а то и 95% работающих типа программистами в СНГ вообще отсутствует. Опять же что понимать под информационной системой? Погонять данные туда-сюда от юзера в бд от бд к юзеру? Как раз и есть работа для монкей-кодеров. А по части именно обработки (серьезного обсчета) данных - то в СНГ это разве что в гейм-дизайне востребовано. А вот в этом плане - а именно алгоритмической обработки данных у меня побольше чем у очень многих.

Добавлено через 9 минут
Цитата Сообщение от cybercitizen Посмотреть сообщение
Ты уже разобрался в исходном коде firefox?
Та нет по ходу пьессы WinHTTP API мучаю. Не хочет WebSocket пахать, хоть бери и в ручную обработчик протокола пиши блин.

Добавлено через 25 минут
А такое количество потоков по всей видимости обусловлено перебором с изоляторами на уровне API. т.е. как изолировать процесс 0-го кольца от процесса 3-его кольца так чтобы осталась возможность отправлять из 0-го кольца в 3-е не только мессаджи но и калбеки? Самый логичный способ - даем при запросе к 0-ому кольцу из 3-го буффер и паузнутый тред, состоящий из мертвого цикла - вызов каллбка, и пауза самого себя. Когда процесс 0-го кольца имеет что сказать вызывающему из 3-го он этот тред ресумит. Вроде ниче схемка. Но если она будет еще и применяться для изоляции между слоями API потоки будут расти как на дрожжах. И это только для асинхронных операций. Хотя опять же непонятно остается зачем 19 потоков калькулятору а при нажатии на кнопку равно добавляется еще 5? СОмнительно чтобы он кучу асинхронных операций выполнял в режиме ожидания и 2+2 считал с асинхронным обращением к файлам и тп.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
04.10.2015, 20:55
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А такое количество потоков по всей видимости обусловлено перебором с изоляторами на уровне API. т.е. как изолировать процесс 0-го кольца от процесса 3-его кольца так чтобы осталась возможность отправлять из 0-го кольца в 3-е не только мессаджи но и калбеки?
какое firefox имеет отношение к ring0?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.10.2015, 20:58  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
какое firefox имеет отношение к ring0?
Прямое. Все данные от и к нему проходят через драйвера живущие в 0-ом кольце. А потоки-изоляторы по всей видимости относятся к вызывающему приложению а не к 0-му кольцу.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
04.10.2015, 21:10
Fulcrum_013, наличие такой прослойки как операционная система тебя не смущает?
0
 Аватар для Voivoid
710 / 283 / 16
Регистрация: 31.03.2013
Сообщений: 1,340
04.10.2015, 21:34
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Погонять данные туда-сюда от юзера в бд от бд к юзеру? Как раз и есть работа для монкей-кодеров
Уж всякому лучше чем, как ты, понабраться каких-то отрывочных знаний и пытаться с умным видом о чем-то там рассуждать.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.10.2015, 08:24  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
наличие такой прослойки как операционная система тебя не смущает?
Нет не смущает. Потому как она собственно говоря и есть набор дров живущих в 0-кольце и API для доступа к их функциям из 3-го кольца.
Цитата Сообщение от Voivoid Посмотреть сообщение
Уж всякому лучше чем, как ты, понабраться каких-то отрывочных знаний и пытаться с умным видом о чем-то там рассуждать.
Ну ну. Смотря в каком плане отрывочных. Или кто то с кем это пытаюсь обсуждать до понимания того что с ними обсуждаю просто не дорос.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
05.10.2015, 20:15
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Нет не смущает. Потому как она собственно говоря и есть набор дров живущих в 0-кольце и API для доступа к их функциям из 3-го кольца.
Теперь объясни мне при чем тут лиса.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
05.10.2015, 20:54  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
Теперь объясни мне при чем тут лиса.
Объясняю. Лиса хочет загрузить страницу. Обращается к API. т.е. дает адрес и буффер в из которого отправить запрос и буффер в который принять результат. API создает паузнутый поток типа спускового крючка для калбека, и отправляет буфера (вполне возможно соответсвенно преобразованные) и Id потока драйверу. Драйвер после к примеру отправки ресумит поток. Так собственно и происходит асинхронный каллбек, что как бы с изоляцией вызова от 0-го кольца напрямую (имеется в виду не через диспетчерезацию событий вызывающего приложения) по другому не сделать. Но если таких изоляторов еще и между уровнями API натыкать будет не очень хорошая ситуация с ростом количества потоков при наращивании слоев. Это если разработчики выше среднемелкомягкогосертефицированного кодера.

Кстати интересно по какой причине у винды модель потоков cooperative которая очень хороша для тяжелых вычислений на нескольких ядрах заменили на concurency? Учитывая что в разработчиках ядра ОС ни в одной корпорации идиотов не держат ответ прост: те кто не попал в разработчики ядра ОС (ну типа те кто сертификатами курсов майкрософт пообвешался) в основной своей массе и асинхронные операции не осилили.
поэтому вместо оного механизма пользуют синхронный вот по такой схеме:
C++
1
2
3
4
5
6
7
ThreadMain(){
     while(!DataReady){ 
           DataReady=CheckDataAvailable();
           //Sleep(1); Это если хоть чуть чуть мозгов есть но так и проспать можно все что угодно.
     };
     ReadData();
}
Естественно при такой схеме начинаются тормоза, особенно если запросов много а конвейер 1 (4 или 8 тоже не сильно помогают). А когда начинает тормозить начинают убирать слипы и повышать приоритет потоков. что вообще ведет к пилюлям от кашля.
То что по дефаулту стек у потока 1MB они тоже успешно не прочитали. Поэтому он по дефаулту и остался. Хорошо хоть винда гарантирует его наличие а не распределяет сразу. Смотрю в монитор ресурсов и обнаруживаю - из 4GB RAM 1.5-2GB - ожидание - т.е этот гарантированный стек спящих непонятно зачем потоков.

А все от того что параллеленье панацеей объявили и т.п.
Вообще создание темы вызвано частенько появляющимися вопросами в духе "почему если массив распарраллелено до потока на каждый элемент суммировать оно в несколько десятков раз дольше чем в одном патоке? Параллеленье оно же ускорять должно как на каждом заборе написано." И потом они вырастут и будут разработчиками в крутых корпорациях. А то что для того чтобы параллеленье в данном случае уместно только с тайлингом при гарантии что каждый поток-обработчик тайла будет на отдельном конвейере выполняться они так и не дойдут.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
06.10.2015, 01:00
То что ты написал вроде бы и правильно, до конца не читал. Только зачем ты всё это писал? Я не понимаю. Вот твои слова:
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А такое количество потоков по всей видимости обусловлено перебором с изоляторами на уровне API. т.е. как изолировать процесс 0-го кольца от процесса 3-его кольца так чтобы осталась возможность отправлять из 0-го кольца в 3-е не только мессаджи но и калбеки?
т.е. здесь ты говоришь о потоках пользовательского приложения и как-то незаметно погружаешься в ядро операционной системы. Но там свои процессы, свои потоки, они не привязаны к процессу в юзерспейсе в том смысле, в котором ты говоришь. Это абстракция. Запросил, подождал, получил. Вызвал epoll_wait и плевать как там оно происходит. Пусть ядро создаст хоть рубль потоков, у лисы сколько было до этого столько и останется. Ты, я смотрю невероятно тугой если говоря о юзерспейсе оказываешься в ring0.
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
06.10.2015, 01:11  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
Ты, я смотрю невероятно тугой если говоря о юзерспейсе оказываешься в ring0.
Да что ты. Весь ring 0 только и занимается передачей прерываний в ring 3 c изоляцией от устройств и разборам по буферам. Т.е. в принципе что каллбек что обработчик аппаратного прерывания - одно и то же с той лишь разницей что callback получает уже вытянутый из устройства буфер.
Цитата Сообщение от cybercitizen Посмотреть сообщение
Пусть ядро создаст хоть рубль потоков, у лисы сколько было до этого столько и останется.
Ошибаешся. при загрузке страницы у лисы и вообще у всего что пользует драйвер сетки асинхронно, стартует потоков столько сколько запросов она кидает. Эти потоки -курки каллбекаов живут в вызывающем процессе а не в ring 0, ring 0 их только спускает по необходимости.. Именно в вызывающем, для того чтобы имели доступ только к памяти вызывающего процесса.
А вот зачем остальные 70 потоков у ее висят вообще мало понятно.
0
 Аватар для cybercitizen
204 / 26 / 5
Регистрация: 22.05.2015
Сообщений: 357
06.10.2015, 01:20
Fulcrum_013, зачем ты пишешь то что не имеет никакого отношения к разговору?
0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
06.10.2015, 03:09  [ТС]
Цитата Сообщение от cybercitizen Посмотреть сообщение
Fulcrum_013, зачем ты пишешь то что не имеет никакого отношения к разговору?
К тому чтобы объяснить что если пулы потоков и нужны то уж точно не для асинхронного ввода-вывода. Он как жил на аппаратных прерываниях со времен доски, а вернее со времен появления контроллера прерываний, так и живет.

Добавлено через 1 час 17 минут
Цитата Сообщение от cybercitizen Посмотреть сообщение
Запросил, подождал, получил.
Это абстракция времен однозадачных ОС. Вернее многозадачных без квантования времени с изоляцией обработчика прерывания от получателя данных.
Цитата Сообщение от cybercitizen Посмотреть сообщение
Вызвал epoll_wait и плевать как там оно происходит.
Отож то и оно. Процессоры и оси стали многозадачными с квантованием времени, а абстракция с тупым ожиданием в мертвом цикле тянется со времен криворуких монкей-кодеров времен доски а то и раньше. у пряморуких даже если и делалась изоляция от обработчика, то с нотификацией через поток сообщений, что так же как и каллбеки требовало автомата состояний а не просто кривого кода с ожиданиями.

Добавлено через 23 минуты
Кстати оси с литым ядром (прямая передача управления в код потребителя из обработчика) живут и здравствуют и поныне. Например реалтаймовая QNX.
0
07.10.2015, 01:55

Не по теме:

QNX монолит. Такое сказать — надо быть невероятным дауном. Я самоустраняюсь. Даже комментировать этот бред не хочу.

0
 Аватар для Fulcrum_013
2083 / 1574 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
07.10.2015, 11:06  [ТС]

Не по теме:

Цитата Сообщение от cybercitizen Посмотреть сообщение
Не по теме:
QNX монолит. Такое сказать — надо быть невероятным дауном. Я самоустраняюсь. Даже комментировать этот бред не хочу.
Ну для того чтобы спутать "литая" (что касается способа передачи управления из ядра) с "монолитная" (что касается разделения ядра на модули) надо быть вообще не в теме.



Добавлено через 9 часов 0 минут

Не по теме:

Цитата Сообщение от cybercitizen Посмотреть сообщение
Я самоустраняюсь.
Главное не самоликвидируйся :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.10.2015, 11:06
Помогаю со студенческими работами здесь

Minecraft Coder Pack или куча ошибок в консоли
Как решить все эти проблемы?

Как задействовать многопоточность для обработки больших запросов в WebBrowser
Здравствуйте,нужна помощь. Как создать потоки,многопоточность,в программе присутствует веб браузер,далее цикл на поиск некого значение на...

исправьте мою криворукость
С рождения проблемы с процедурами, ошибки при объявлениях помогите исправить: #include <iostream> #include <cstdlib> ...

Как вылечить криворукость
Здравствуйте. У меня хроническая форма рукопопия. У меня постоянно ломается техника, которую приносят на ремонт. Создается впечатление, что...

Криворукость и методы ее лечения
Господа, подскажите старому паскалисту, по привратности судьбы занесенному в дебри WEB дизайна, что не так в этой строчке: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
59
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru