C# Многопоточная разработка. Многопоточность без Task (ов)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 พ.ค. 2022
  • В этом видео расскажу о способах многопоточной разработке высоконагруженных вычислений, которые я применяю уже более 10 лет как минимум.

ความคิดเห็น • 35

  • @kl45gp
    @kl45gp 10 หลายเดือนก่อน +4

    я реально не понимаю почему так мало лайков и подписок, канал ну чуть ли не лучший по дот нету! Спасибо вам огромное за ваш труд!

    • @Kulibins1
      @Kulibins1  10 หลายเดือนก่อน +2

      спаибо ☺️

  • @yu.diachenko7889
    @yu.diachenko7889 2 ปีที่แล้ว +8

    Круть, это самое сложное что есть в программировании. Тема интересная, продолжайте пожалуйста. Таски, среды, асинки...

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +6

      Все в плане, только план роликов растет быстрее чем я их снимаю 🤣

  • @vinogradova619
    @vinogradova619 2 ปีที่แล้ว +9

    Фантастика, интересно ещё в таком духе 👍

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +2

      Спасибо 😉 буду стараться.

  • @trickontology
    @trickontology 2 ปีที่แล้ว +2

    Извиняюсь за глупый вопрос, на который можно ответить "загугли", но как вы сделали так, что у вас отображаются в коде наименования входных параметров методов? Попытался сейчас загуглить, но что-то не могу сформулировать нормально запрос.

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +2

      В настройках студии, редактор, где-то в самом конце есть опция. Завтра скину инструкцию в свою группу телеги, так что подписывайтесь, если еще не подписаны 😋

  • @Dhaizkcnekxockrnr
    @Dhaizkcnekxockrnr 8 หลายเดือนก่อน +1

    Интересно конечно, что при PLINQ в 27 раз больше памяти ушло, по сравнению с Parallel

    • @Kulibins1
      @Kulibins1  8 หลายเดือนก่อน +1

      Там разница не будет пропорциональной. там счинанные килобайты добавляется.

  • @june3878
    @june3878 ปีที่แล้ว +1

    А можно ссылку на видео про interlicked?

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +2

      th-cam.com/video/DYlYcLm4MUo/w-d-xo.html

  • @egorbredihin2279
    @egorbredihin2279 2 ปีที่แล้ว +1

    Здравствуйте. Я параллельно просматривая плейлист "C#, Микросервисы и всё что с ними связано" написал два API сервиса. Я опубликовал свои сервисы в папку и попытался запустить, после чего столкнулся с проблемой, что 2 одновременно у меня не запускаются.

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว

      Привет что подразумевается под двумя сервисами? 2 контроллера? Нужно смотреть как вы делали роуминг, может на одном и том же адресе, посмотрите мой демо проект на гитаре, там все что вам может понадобиться

    • @egorbredihin2279
      @egorbredihin2279 2 ปีที่แล้ว +1

      @@Kulibins1 Спасибо за ответ. проблема была в адресе. Мне помог следующий код в Program:
      webBuilder.ConfigureKestrel(serverOptions => {
      serverOptions.Listen(new System.Net.IPEndPoint(0, 5002));
      }).UseStartup();

    • @egorbredihin2279
      @egorbredihin2279 2 ปีที่แล้ว +1

      @@Kulibins1Отдельное спасибо за Ваш материал (контент).

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว

      @@egorbredihin2279 я эндпоинты через конфигурацию настраиваю.

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +1

      @@egorbredihin2279 всегда пожалуйста 😊

  • @Bont1860
    @Bont1860 ปีที่แล้ว +1

    Супер! Это то, что мне сейчас надо! Скажите пожалуйста, стоит ли писать 3d приложение по работе на WinFroms или лучше уже применять WPF приложение? Моя задача тоже состоит в сечении 3д модели и получения плоскости сечения.

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +2

      Я делал на wpf, 3d на winforms это что-то извращённое 🤣 wpf все через видюшку рендерится и довольно шустро.

    • @Bont1860
      @Bont1860 ปีที่แล้ว +1

      @@Kulibins1 можете еще подсказать пожалуйста, какую платформу выбрать для 3D WPF приложения? .Net Core 6 или .Net FrameWork 4.8 ? Я пока не вижу никакого смысла использовать Core 6, кроме как новых фич языка C# выше 7.0

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +1

      @@Bont1860 когда делал на wpf это был 4.8 (начиная с 3.0), сейчас wpf не делаю, поэтому даже не скажу как это core стало работать т.к. в первых core оно не работало полноценно

  • @semen083
    @semen083 2 ปีที่แล้ว +1

    Каким образом Вы определяете верхний порог распараллеливания задач? Не совсем понятен подход по количеству ядер в процессоре- ведь распараллеливание в худшем случае создаёт Thread для каждого элемента распараллеленной коллекции. А количество потоков!=количеству ядер в процессоре. На видео, где показан диспетчер задач количество потоков больше 5000, а ядер 24. Соответственно почему бы не поставить MaxParallelDegree например 100? На общем количестве потоков операционной системы достаточно незначительное количество.

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +1

      Сейчас верхний порог определяется автоматически систей, смотрится колчичество ядер и т.д. что Task, что threadpool они не создают безлимитно потоки. Но в примере можно задать и самим, например вы не хотите 100% загрузки и сами уменьшаете.

  • @13zymosis
    @13zymosis ปีที่แล้ว +1

    Не корректно говорить, что работает в 10 раз быстрее, когда вы используете Sleep для потока. Поставьте там в цикле 20 вместо 10-ти и получите в 20 раз быстрее, а если потоков в пуле, много то и в 100 раз можно ))) При параллельных вычислениях быстродействие упирается в загрузку ядер процессора, а у вас потоки спят, не создавая нагрузки.

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +1

      Про то что это условно, я вроде говорил, всё может упереться в доступ к памяти или любому другому ресурсу. Но всё равно на реальных тестах бывает почти линейная зависимость, у меня был проект где делались расчеты поверхности земли (например изолинии) там нет слипов 🤣 и почти линейно растёт производительность

  • @putler-kaputt
    @putler-kaputt ปีที่แล้ว +1

    Чёт я себе весь мозг уже сломал с этими потоками и асинхронностью... У меня есть прога ZennoPoster, в ней C# поддерживается на примитивном уровне, там я начал вникать по чуть-чуть в этот язык. Сейчас, через годы, перешёл на Visual Studio, и застопорился. ZennoPoster всё просто: многопоточность, это запуск одновременно и параллельно несколько копий твоей программки -- процедурное программирование по-сути. А тут, потоки как-то сами собой создаться в фоновом режиме -- тред-пул какой-то. Капец, сложнова-то. В результате логику кода своего не понимаю до конца.

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +3

      Изначально всё просто, но есть кучу тонкостей, например когда мы бесконтрольно создаём потоки, то это плохо, поэтому и всякие пулы придумали. В этом видео постарался рассказать понятно, но видать не справился 🤣

    • @putler-kaputt
      @putler-kaputt ปีที่แล้ว +1

      Хочу телеграм-бот написать, консольная программка. Вроде нормально получается для первого раза, мозгов скопипастить чужой код-каркас хватило)) Библиотека "Telegram . Bot". Однако после того как купил второй телеграм-аккаунт для теста, оказалось что бот работает в одноточном режиме.
      "Здесь наши полномочия всё" (с) Подозреваю, что теперь нужно учить создание потоков и запуск бота в них.

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +2

      @@putler-kaputt есть примеры ботов. Хорошая тема.

    • @user-sm6du2wh7r
      @user-sm6du2wh7r ปีที่แล้ว

      Ахах, тоже с языком c# столкнулся в программе zennoposter =), даже на курсы записался по языку. У нас было задание написать telegram bot, но при этом мы не проходили async await ни Task=). Смотрю на Ваш код, у меня аж глаз дёргается (в хорошем смысле) =).

  • @Hemyl0500
    @Hemyl0500 ปีที่แล้ว +3

    И все-таки не "консолизэйшн токен", а "консэлэйшн токен" (:

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +1

      Ну вы прям придираетесь 🤣

  • @alexeycherepanov9150
    @alexeycherepanov9150 ปีที่แล้ว +1

    Над названием переменных стоит конечно поработать, стыдно после цати лет писать так

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +3

      Так это было в оригинале, я скопировал из статьи.