Как можно быстро ознакомиться с многопоточностью и ассинхронным программированием?
Добрый день!
Меня очень огорчает, что я совсем не знаю, как писать многопоточные программы, и даже процесс от потока едва отличаю.
Вместе с тем, мне бы хотелось для начала быстро ознакомиться с темой целиком, чтобы в ней хоть как-то ориентироваться, перед тем как изучать это всё глубоко и основательно.
Мне бы очень хотелось бы найти какой-нибудь простой ознакомительный материал, чтобы в нём было разложено всё по полочкам и на пальцах.
Как результат, я хотел бы написать программу, которая могла бы вести расчёт параллельно, используя сразу все ядра процессора.
И ещё... Я бы очень хотел найти материалы, в которых бы не было C++.
Как результат, я хотел бы написать программу, которая могла бы вести расчёт параллельно, используя сразу все ядра процессора.
ладно, а зачем тогда ты привлек сюда асинхронность?
Материалов достаточно, гугли и сам выбирай какой тебе понятнее, откуда нам знать что тебе зайдет. А, ну и определитесь уже на каком именно ЯП ты хочешь это делать.
ну по поводу "используя все ядра процессора" эт вы конечно загнули, чтобы таким процессом управлять нужен драйвер, не меньше. ОС сама определяет что и где считать. Многоядерность !== многопоточность. Но глубоко в эту тему не копал, может есть АПИ для этого
поговори с ИИ (выбирай топовые модели а не младшие gpt4o, claude sonnet, gemini pro/.., до углубления в сложные вещи он на текущий момент идеальный помощник в обучении.
Но когда до реальных задач дойдешь, перепроверяй все,.. иногда там примитивные ошибки вылезают, которые модель сама найдет, если на них указать (например не собирается проект или выдает ошибку),.. 1-2 итерации и резальтат готов.
Один из способов применения ИИ - это работать в тандеме с ним, ты должен понимать каждый их ответ и быдь готов указать на ошибки.
Filipp42, я не пользовался o1, немного смотрел на o1-preview, ошибок у нее не замечал, мало того она помогала мне найти решения, которые не могли найти простые модели.
Но повторяю, знания, которые собраны у ИИ через обучающую выборку - свалены в кучу. То что gpt в принципе их помнит, и даже может этими знаниями пользоваться, дико шокирует, так как не должно было бы (из-за чего я не понимаю тех кто вопит о том что это нисколько не интеллект, в примитивном варианте - вполне себе интеллект)...
пример ошибки,
которую скорее всего допустит и o1 - спрашиваю о способе смонтировать файловую систему ext4 в linux но возможностью игнорировать большие/маленькие буквы при работе с файлами (это фича виндового fat/ntfs/hpfs, когда создав 'Мой Файл.txt' ты можешь открыть его по имени 'мОЙ фАЙЛ.TXT'), задавал вопрос разными способами, включая выдачи в запросе части ответа, но все равно обычные gpt могут предлагать ключи монтирования mount, которых у ext4 нет... а все потому, что в обучающую выборку попала длинная портянка мануала man mount, где в очень неудобной форме свалены в кучу все файловые системы... но если эту же портянку, подать в запросе, то gpt начинают в ней разбираться и понимать, что ключами mount делу не поможешь и предлагать решения (другие файловые системы или патч, который кстати в 2019г включили в состав ядра но похоже эта информация еще не очень попала в новые версии ИИ)
Берете любую вузовскую методичку про теорию вычислительных процессов. Открываете ее там, где описано что такое критический ресурс, мьютексы, семафоры.
Любой ЯП, который вам в консоль может выводить результат (CLI-приложение), смотрите, какие расширения нужно подключить, чтобы работали потоки и семафорные методы блокировки.
Открываете эту же методичку на практических заданиях/лаборатоке, и смотрите задание, как разграничить конкурирующие потоки к одному критическому ресурсу - классическая задача "о производителе и потребителе".
Делаете лабу.
Все, вы работаете с потоками.