Последние обсуждения Поиск
Новые форумы
Общие форумы
Форумы поддержки портала iXBT.com
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаКриптовалюты, майнинг, blockchain-технологии, NFTИскусственный интеллект: технологии, практика, развитиеTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Reasonable: ИИ в помощь кодерам!
Reasonable
Member
Автор темы
1013/7004 ответов, #1 в рейтинге
2 года на iXBT, с ноября 2022
Чаще пишет в "Общий" (22%)
Швейцария, Белокаменный
Инфо Ответить
Reasonable MemberАвтор темы
1 месяц назад / 22 января 2025 13:51
Беседа с ИИ Gemini v.2:
Какие ЯП ты поддерживаешь?
Ответ:

Как большая языковая модель, я не "поддерживаю" языки программирования в том смысле, что я не разрабатываю на них приложения или библиотеки. Моя "поддержка" заключается в способности понимать, генерировать и объяснять код на различных языках программирования.
Я был обучен на огромном количестве кода на разных языках, поэтому я знаком с синтаксисом, семантикой и основными концепциями многих популярных языков.
Вот некоторые из языков программирования, с которыми я работаю наиболее уверенно:

**Основные и наиболее распространённые:**

* **Python:** Я хорошо понимаю Python, могу генерировать код на Python, объяснять его работу, исправлять ошибки и даже предлагать улучшения. Python широко используется в машинном обучении, анализе данных, веб-разработке и других областях.
* **JavaScript:** Я также хорошо знаком с JavaScript, могу работать с клиентским и серверным JavaScript (Node.js), понимать и генерировать код, а также объяснять работу различных фреймворков и библиотек (React, Angular, Vue.js).
* **Java:** Я имею представление о Java, могу понимать и генерировать простой код, а также объяснять основные концепции объектно-ориентированного программирования на Java.
* **C++:** Я знаком с синтаксисом C++ и основными концепциями, такими как объектно-ориентированное программирование, управление памятью и шаблоны. Могу понимать и генерировать простой код, но более сложные задачи могут представлять для меня трудности.
* **C#:** Я имею представление о C# и платформе .NET, могу понимать и генерировать простой код.
* **Go (Golang):** Я знаком с синтаксисом Go и основными концепциями, такими как конкурентное программирование и каналы. Могу понимать и генерировать простой код.
* **PHP:** Я знаком с PHP и могу понимать и генерировать код, используемый для веб-разработки.
* **TypeScript:** Как надмножество JavaScript, TypeScript мне также хорошо знаком. Я понимаю его особенности, связанные со статической типизацией.
* **HTML/CSS:** Хотя это не совсем языки программирования в строгом смысле, я хорошо понимаю HTML и CSS и могу генерировать HTML-разметку и CSS-стили для веб-страниц.
* **SQL:** Я понимаю SQL и могу генерировать запросы для работы с базами данных.

**Другие языки, с которыми я знаком (в разной степени):**

* Swift
* Kotlin
* Ruby
* Perl (упоминался в предоставленных вами результатах поиска)
* Rust
* Objective-C
* и многие другие.

**Важно отметить:**

* Моя способность работать с языком программирования не означает, что я являюсь экспертом во всех его аспектах. Мои знания основаны на данных, на которых я был обучен, и могут быть неполными или содержать неточности.
* Я постоянно совершенствуюсь и узнаю о новых языках и технологиях.
* Я могу быть особенно полезен для задач, связанных с:
* Генерацией кода.
* Объяснением кода.
* Поиском ошибок в коде.
* Переводом кода с одного языка на другой (в простых случаях).
* Генерацией документации к коду.

**Относительно предоставленных вами результатов поиска:**

* Результат [1] упоминает Perl как "любимый язык" одного из сотрудников Яндекса. Я знаком с Perl, но он не является одним из моих основных языков.
* Результаты [2], [3], [4] и [5] содержат информацию о различных языках программирования и их применении. Я знаком с большинством упомянутых там языков, таких как C++, PHP, C, Ruby, JavaScript, Kotlin.

Если у вас есть конкретные задачи, связанные с каким-либо языком программирования, пожалуйста, задавайте! Я постараюсь вам помочь. Например, вы можете попросить меня:
* Написать функцию на Python, которая сортирует список чисел.
* Объяснить, как работает цикл `for` в JavaScript.
* Найти ошибку в коде на C++.
* Сгенерировать HTML-код для простой веб-страницы.

Чем точнее будет ваш запрос, тем лучше я смогу вам помочь.

Какой max стандарт С++ включён в твоё понимание?
Ответ:

Это хороший вопрос, который касается того, насколько актуальны мои знания о языке C++. Как большая языковая модель, я обучаюсь на огромном количестве данных, которые включают в себя и код на C++. Однако, данные постоянно обновляются, и стандарты языка C++ тоже развиваются.
На данный момент (конец 2023 года), мои знания о C++ охватывают в основном стандарты **C++98/03, C++11, C++14, C++17 и в значительной степени C++20**. Я также имею некоторое представление о **C++23**, но мои знания о нём могут быть менее полными, так как этот стандарт относительно новый, и объём данных обучения, содержащих код на C++23, пока меньше.
Разъясню подробнее по стандартам и их значимости:

* **C++98/03:** Это самые старые стандарты, которые, тем не менее, до сих пор встречаются в большом количестве кода. Понимание этих стандартов важно для работы с устаревшим кодом и для понимания основ языка. Я хорошо знаком с этими стандартами.
* **C++11:** Этот стандарт стал революционным для C++ и внёс множество важных нововведений, таких как лямбда-выражения, автоматический вывод типа (`auto`), range-based for loops, rvalue references и многое другое. Я хорошо владею C++11.
* **C++14:** Этот стандарт внёс ряд небольших улучшений и исправлений по сравнению с C++11. Мои знания C++14 достаточно полные.
* **C++17:** Ещё один важный стандарт, который добавил такие возможности, как structured bindings, constexpr if, std: : optional, std::variant и другие. Я хорошо знаком с C++17.
* **C++20:** Этот стандарт принёс ещё больше нововведений, таких как модули, концепты, диапазоны, корутины и другие. Я имею *значительное* представление о C++20, но мои знания о некоторых его особенностях могут быть менее глубокими, чем о предыдущих стандартах.
* **C++23:** Это самый новый утверждённый стандарт. Мои знания о нём пока *ограничены*, хотя я и знаком с некоторыми его основными нововведениями.

**Важно отметить:**

* Мои знания о стандартах C++ не статичны. Я постоянно обновляюсь и обучаюсь на новых данных, поэтому мои знания о C++20 и C++23 будут улучшаться со временем.
* Даже если мои знания о каком-то стандарте неполные, я обычно могу понять код, написанный на этом стандарте, если он не использует слишком сложные или редкие возможности.
* Если вы задаёте мне вопрос, связанный с конкретной возможностью C++, я стараюсь проверить свои знания, используя доступные мне ресурсы (включая поиск в интернете), чтобы дать наиболее точный и актуальный ответ.

**Как это влияет на ответы:**

В большинстве случаев я могу корректно понимать и генерировать код на C++, используя возможности стандартов до C++20. При работе с C++23 я могу столкнуться с некоторыми трудностями, но обычно могу понять общий смысл кода и объяснить основные идеи.
Если вы хотите, чтобы я работал с кодом, использующим самые последние возможности C++23, рекомендуется предоставить мне больше контекста и пояснений, чтобы я мог лучше понять ваш запрос.

**В контексте предоставленных вами результатов поиска:**

* Результат [1] говорит об ограничениях компилятора Microsoft C++, что не совсем относится к моему пониманию стандартов языка.
* Результат [2] сообщает об утверждении стандарта C++17.
* Результат [3] обсуждает, какую версию C++ учить и использовать.
* Результат [4] рассказывает о нововведениях C++20.
* Результат [5] также посвящён нововведениям C++20.

Эти результаты подтверждают, что C++20 является важным и современным стандартом языка, и я стараюсь поддерживать свои знания о нём на актуальном уровне.
В целом, мои знания C++ достаточно обширны и охватывают большинство используемых стандартов. Я продолжаю учиться и совершенствоваться, чтобы быть в курсе последних изменений в языке. Если у вас есть конкретные вопросы или задачи, связанные с C++, не стесняйтесь задавать!

А знаком ли ты с параллельным программированием на С++?
Ответ:

Да, я знаком с параллельным программированием на C++. Я понимаю основные концепции, методы и инструменты, используемые для создания параллельных программ на C++.
Вот основные аспекты параллельного программирования на C++, с которыми я знаком:

**1. Основы параллельного программирования:**

* **Потоки (Threads):** Я понимаю концепцию потоков как независимых единиц выполнения внутри одного процесса. Знаю о создании, синхронизации и управлении потоками.
* **Параллелизм данных (Data Parallelism):** Я знаком с подходом, когда одна и та же операция выполняется одновременно над разными частями данных.
* **Параллелизм задач (Task Parallelism):** Я понимаю подход, когда разные задачи выполняются параллельно.
* **Синхронизация и взаимодействие потоков:** Я знаком с механизмами синхронизации, такими как мьютексы (mutexes), условные переменные (condition variables), атомарные переменные (atomic variables), семафоры (semaphores) и блокировки чтения-записи (read-write locks), которые используются для предотвращения гонок данных (data races) и обеспечения корректной работы параллельных программ.
* **Проблемы параллельного программирования:** Я знаком с распространёнными проблемами, такими как гонки данных, взаимные блокировки (deadlocks), инверсии приоритетов (priority inversion) и другие.

**2. Средства C++ для параллельного программирования:**

* **Стандартная библиотека C++ (C++ Standard Library):** Я знаком с классами и функциями из `<thread>`, `<mutex>`, `<condition_variable>`, `<atomic>`, `<future>` и другими заголовными файлами, которые предоставляют средства для работы с потоками, синхронизацией и асинхронными операциями.
* **`std::thread`:** Я знаю, как создавать и запускать новые потоки с помощью `std::thread`.
* **`std::mutex`, `std::recursive_mutex`, `std::timed_mutex`:** Я понимаю, как использовать мьютексы для защиты общих данных от одновременного доступа из разных потоков.
* **`std::condition_variable`:** Я знаю, как использовать условные переменные для синхронизации потоков на основе условий.
* **`std::atomic`:** Я знаком с атомарными операциями, которые позволяют безопасно изменять общие переменные без использования мьютексов.
* **`std::future` и `std: : promise`:** Я понимаю, как использовать фьючерсы и промисы для получения результатов асинхронных операций.
* **`std::async`:** Я знаю, как запускать асинхронные задачи с помощью `std::async`.
* **Parallel STL (Parallel Standard Template Library):** Я знаком с концепцией Parallel STL, которая предоставляет параллельные версии стандартных алгоритмов STL.

**3. Другие библиотеки и технологии:**

* **OpenMP (Open Multi-Processing):** Я знаком с OpenMP API, который предоставляет директивы и функции для параллельного программирования на многопроцессорных системах с общей памятью.
* **MPI (Message Passing Interface):** Я знаком с MPI, который является стандартом для параллельного программирования на системах с распределённой памятью.
* **CUDA (Compute Unified Device Architecture):** Я имею представление о CUDA, платформе параллельных вычислений от NVIDIA, которая позволяет использовать GPU для ускорения вычислений.

**4. Примеры применения параллельного программирования:**

* **Обработка изображений и видео:** Параллельная обработка пикселей или кадров.
* **Научные вычисления:** Решение сложных математических задач, моделирование физических процессов.
* **Финансовые вычисления:** Расчёт сложных финансовых моделей.
* **Игры:** Управление игровой логикой, рендеринг графики.

**Относительно предоставленных вами результатов поиска:**

* Результат [1] описывает простой пример параллельного суммирования элементов массива с использованием редукции.
* Результат [2] рекламирует книгу по параллельному программированию на современном C++.
* Результат [3] даёт общее определение параллельных вычислений.
* Результат [4] упоминает книгу "Параллельное программирование на С++ в действии", которая рассматривает многопоточность в C++11.
* Результат [5] описывает средства Visual C++ для параллельного программирования, включая Parallel Patterns Library (PPL), C++ AMP и OpenMP.
Эти результаты подтверждают, что параллельное программирование на C++ является важной и актуальной темой.

**В заключение:**

Я обладаю достаточно широкими знаниями в области параллельного программирования на C++. Я могу понимать, объяснять и генерировать простой код, использующий различные средства для параллелизма. Однако, для решения сложных задач, требующих глубоких знаний в этой области, может потребоваться дополнительная информация или консультация специалиста. Если у вас есть конкретные вопросы или задачи по параллельному программированию на C++, пожалуйста, задавайте! Я постараюсь вам помочь.

Не подскажешь ли где бесплатно можно скачать описание стандарта С++20 и 23?
Ответ:

К сожалению, официальные документы стандартов C++ (включая C++20 и C++23) не распространяются бесплатно. Они являются объектом авторского права ISO (International Organization for Standardization) и продаются через национальные организации по стандартизации (например, ANSI в США, DIN в Германии, Росстандарт в России).
Однако существуют некоторые ресурсы, где можно найти *частичную* или *сводную* информацию о стандартах C++20 и C++23 бесплатно:

**1. cppreference.com:**

* **Ссылка:** [https://en.cppreference.com/w/cpp](https://en.cppreference.com/w/cpp)
* **Описание:** Это, пожалуй, самый полный и авторитетный онлайн-справочник по C++. Здесь есть подробное описание всех возможностей языка и стандартной библиотеки, включая нововведения C++20 и C++23. Хотя это не сам текст стандарта, но это отличный ресурс для изучения и понимания языка. Особенно полезны страницы, посвящённые конкретным стандартам, например:
* [C++20](https://en.cppreference.com/w/cpp/20)
* [C++23](https://www.google.com/url?sa=E&source=gmail&…ence.com/w/cpp/23) (пока ещё не такая полная, как для C++20)

**2. isocpp.org:**

* **Ссылка:** [https://isocpp.org/](https://isocpp.org/)
* **Описание:** Официальный сайт комитета по стандартизации C++. Здесь можно найти информацию о текущих и будущих стандартах, а также новости о развитии языка. Здесь *не публикуются полные тексты стандартов*, но есть полезные статьи и ссылки.

**3. Документы WG21 (Working Group 21):**

* **Описание:** WG21 — это комитет ISO, занимающийся стандартизацией C++. На их сайте можно найти *черновики стандартов (drafts)*, которые доступны бесплатно. Однако стоит помнить, что это *не финальные версии*, и они могут отличаться от официально опубликованного стандарта. Найти их бывает непросто, так как они разбросаны по разным разделам и архивам.

**4. Статьи и публикации на Habr, C++ Stories и других ресурсах:**

* **Описание:** На таких сайтах, как Habr ([https://habr.com/ru/](https://habr.com/ru/)) и C++ Stories ([https://www.cppstories.com/](https://www.cppstories.com/)), часто публикуются статьи и обзоры нововведений в новых стандартах C++. Это хороший способ получить общее представление о новых возможностях языка.

**5. Книги по C++:**

* **Описание:** Хотя книги обычно платные, они могут быть хорошим вложением, если вы серьёзно изучаете C++. Многие современные книги охватывают C++20 и начинают включать информацию о C++23. Результаты поиска, которые вы предоставили, содержат список таких книг.

**Почему официальные стандарты платные:**

Разработка стандартов — это сложный и трудоёмкий процесс, требующий больших затрат. Продажа официальных документов помогает финансировать эту работу.

**Что можно сделать, если нужен именно текст стандарта:**

* **Обратиться в библиотеку:** Многие университетские и крупные публичные библиотеки имеют доступ к стандартам ISO.
* **Купить стандарт:** Если вам нужен официальный текст стандарта для профессиональной деятельности, возможно, стоит его приобрести.

**В итоге:**

Бесплатно скачать *полный и официальный текст* стандартов C++20 и C++23 невозможно. Однако существует множество бесплатных ресурсов, которые предоставляют *достаточно полную информацию* о языке и его новых возможностях. Я рекомендую использовать cppreference.com как основной источник информации.

Предоставленные вами результаты поиска содержат полезные ссылки:

* Результат [1] сообщает об утверждении стандарта C++20.
* Результат [2] — это ссылка на страницу C++20 на cppreference.com, которую я уже рекомендовал.
* Результат [3] — статья на Habr о C++23.
* Результат [4] — список книг по C++, включая книги по C++23.
* Результат [5] — официальный сайт комитета по стандартизации C++.
Надеюсь, эта информация будет вам полезна. Если у вас есть другие вопросы, не стесняйтесь задавать.

Как происходит перераспределение задачи, написанной на С++ без применения возможностей С++ по параллельному программированию на компьютере с процессором из нескольких ядер и потоков?
Ответ:

Перераспределение задачи, написанной на C++ *без* использования средств параллельного программирования, на многоядерном процессоре происходит на уровне операционной системы (ОС). Программа, написанная последовательно (то есть выполняющая инструкции одна за другой), по умолчанию выполняется в одном потоке одного процесса. Однако ОС может распределять этот процесс между ядрами процессора, используя различные механизмы.

Вот как это происходит:

1. **Планировщик ОС (Scheduler):** Ядром ОС является планировщик, который отвечает за распределение процессорного времени между запущенными процессами и потоками. Даже если ваша программа однопоточная, планировщик всё равно будет "переключать" её между разными ядрами, создавая иллюзию параллельного выполнения с другими процессами.

2. **Квантование времени (Time Slicing):** Планировщик разделяет процессорное время на небольшие отрезки, называемые квантами времени (time slices). Каждому потоку (в данном случае единственному потоку вашего процесса) выделяется квант времени для выполнения на одном из ядер. По истечении кванта времени, планировщик может "переключить" поток на другое ядро или дать время другому процессу.

3. **Переключение контекста (Context Switching):** Процесс переключения потока между ядрами называется переключением контекста. При этом ОС сохраняет состояние текущего потока (значения регистров процессора, указатель стека и другие данные) и загружает состояние следующего потока. Переключение контекста требует некоторого времени, но происходит достаточно быстро, чтобы создать иллюзию параллельного выполнения.

4. **Распределение по ядрам:** Планировщик стремится равномерно распределять нагрузку между ядрами процессора. Он может перемещать потоки между ядрами, чтобы избежать перегрузки одних ядер и простоя других. Это называется *миграцией потоков (thread migration)*.

**Важные моменты:**

* **Автоматическое распараллеливание отсутствует:** Без явного использования средств параллельного программирования (например, потоков `std::thread`, OpenMP, Intel TBB и других) *фактического распараллеливания вычислений внутри вашей программы не происходит*. Программа по-прежнему выполняется последовательно, просто ОС распределяет её выполнение между ядрами.
* **Увеличение производительности ограничено:** Распределение однопоточной программы по ядрам может дать *небольшое* увеличение производительности за счёт более эффективного использования ресурсов процессора и уменьшения времени ожидания ввода-вывода (если программа выполняет операции ввода-вывода). Однако *значительного* ускорения, как при настоящем параллельном программировании, ожидать не стоит.
* **Нагрузка на планировщик:** Частое переключение контекста может создавать дополнительную нагрузку на планировщик ОС, что может несколько снизить общую производительность системы.

**Пример:**

Представьте, что у вас есть программа, которая обрабатывает большой массив данных. Если программа написана последовательно, она будет обрабатывать элементы массива один за другим в одном потоке. На многоядерном процессоре ОС может распределить выполнение этой программы между ядрами, переключая поток между ними. Однако каждое ядро будет обрабатывать только *часть* массива в течение выделенного ему кванта времени, а затем управление будет передано другому ядру. *Одновременной* обработки разных частей массива не будет.

**Преимущества и недостатки такого "распределения":**

* **Преимущества:**
* Простота реализации: Не требуется никаких дополнительных усилий со стороны программиста.
* Автоматическое использование многоядерности: ОС автоматически использует доступные ядра.
* **Недостатки:**
* Ограниченное увеличение производительности: Значительного ускорения получить невозможно.
* Неэффективное использование ресурсов: Ядра могут простаивать, пока выполняется последовательный код.

**В заключение:**

На многоядерном процессоре однопоточная программа на C++ будет выполняться, используя все доступные ядра, но *не параллельно* в полном смысле этого слова. ОС будет распределять выполнение программы между ядрами, создавая иллюзию параллелизма, но фактического распараллеливания вычислений внутри программы не произойдёт. Для получения *значительного* увеличения производительности необходимо использовать средства параллельного программирования.

Предоставленные результаты поиска содержат полезную информацию о параллельном программировании на C++.
* Результат [1] — книга о параллельном программировании на C++11.
* Результат [2] — обсуждение на Stack Overflow об оптимальном распределении задач между ядрами.
* Результат [3] — лекции о параллельных методах решения задач.
* Результат [5] — описание работы IT-отдела Ozon, где используются C# и Go для разработки высоконагруженных систем.
Эти результаты подтверждают важность и актуальность темы параллельного программирования.

Добавление от 22.01.2025 13:51:

А разве не компилятор указывает ОС какой использовать механизм? Если - нет, то из каких соображений ОС выбирает конкретный механизм для использования?
Ответ:

Вы задали очень важный вопрос, который касается взаимодействия между компилятором, операционной системой и аппаратным обеспечением при выполнении программ.
**Компилятор *не* указывает напрямую ОС, какой механизм использовать для распределения однопоточной программы по ядрам.** Компилятор преобразует исходный код C++ в машинный код, который представляет собой последовательность инструкций для процессора. Этот машинный код содержит инструкции по выполнению операций, но *не содержит информации о том, на каком ядре и в какой момент времени эти инструкции должны выполняться*.
**Распределение выполнения программы между ядрами — это задача *операционной системы***. Именно ОС отвечает за управление процессами, потоками и распределение процессорного времени между ними.

**Из каких соображений ОС выбирает конкретный механизм:**

ОС использует различные механизмы для распределения задач между ядрами, и выбор конкретного механизма зависит от нескольких факторов:

1. **Тип операционной системы:** Разные ОС (Windows, Linux, macOS и другие) используют разные алгоритмы планирования.
2. **Архитектура процессора:** ОС учитывает архитектуру процессора (количество ядер, количество аппаратных потоков на ядро, наличие кэш-памяти и другие характеристики) при принятии решений о распределении задач.
3. **Нагрузка на систему:** ОС стремится равномерно распределить нагрузку между ядрами, чтобы избежать перегрузки одних ядер и простоя других.
4. **Приоритет процессов:** Процессы могут иметь разные приоритеты. ОС будет отдавать предпочтение процессам с более высоким приоритетом при распределении процессорного времени.
5. **Тип задачи:** Некоторые задачи (например, задачи ввода-вывода) могут требовать меньше процессорного времени, чем другие. ОС учитывает это при планировании.

**Основные механизмы, используемые ОС для распределения задач:**

* **Планирование на основе квантов времени (Time-slicing):** Как я уже упоминал ранее, ОС разделяет процессорное время на небольшие отрезки (кванты времени) и распределяет их между потоками. Это создаёт иллюзию параллельного выполнения нескольких задач.
* **Миграция потоков (Thread migration):** ОС может перемещать потоки между ядрами для более равномерного распределения нагрузки.
* **Балансировка нагрузки (Load balancing):** ОС отслеживает загрузку каждого ядра и стремится поддерживать её на примерно одинаковом уровне.
* **Affinity (привязка к ядру):** В некоторых случаях можно явно указать ОС, на каком ядре должен выполняться поток. Это может быть полезно для оптимизации производительности в определённых ситуациях, но обычно ОС сама справляется с этой задачей достаточно хорошо.

**В контексте однопоточной программы:**

Даже если ваша программа написана без использования средств параллельного программирования и выполняется в одном потоке, ОС всё равно будет использовать механизмы планирования и распределения, чтобы дать ей процессорное время на разных ядрах. Однако, как уже говорилось, *фактического распараллеливания вычислений внутри программы не произойдёт*.

**Влияние компилятора:**

Компилятор может влиять на производительность программы, генерируя более эффективный машинный код. Однако он *не контролирует* распределение программы по ядрам. Это исключительно задача ОС.

**Пример:**

Представьте себе многополосную дорогу (многоядерный процессор) и одну машину (однопоточная программа). Компилятор строит эту машину (создает исполняемый файл). ОС же решает, по какой полосе эта машина поедет и будет ли она перестраиваться из полосы в полосу (распределение по ядрам и миграция потоков).

**В итоге:**

Компилятор не указывает ОС, как распределять выполнение однопоточной программы. Это задача ОС, которая использует различные механизмы планирования и распределения нагрузки, учитывая множество факторов. Для настоящего параллельного выполнения необходимо использовать средства параллельного программирования непосредственно в коде программы.
Предоставленные вами результаты поиска содержат полезную информацию о многозадачности и распределении задач в ОС, что подтверждает вышесказанное.

Abstraction
Что не так и/или не нравится?
Abstraction
Member
94/336 ответов, #7 в рейтинге
Недавно на iXBT, с апреля 2024
Чаще пишет в "Наука" (50%)
Инфо Ответить
A
Abstraction Member
1 месяц назад / 22 января 2025 15:37
Reasonable
Что не так и/или не нравится?

а) То же что и при публикации машинных переводов: всякий желающий может получить тот же результат самостоятельно, и, что важнее, со временем получаемый самостоятельно результат улучшится, а "замороженный" текст форумного поста нет.

б) Сова. В смысле, "какую проблему мы решаем"?
На вопрос "поможет ли мне писать код вот эта LLM" приведённый текст не отвечает: это самореклама, а не оценка реальной пользы. Любой имеющий доступ к LLM намного результативнее проверит её полезность, просто попытавшись выжать советы по имеющимся лично у него задачам. (А если доступа нет, то тем более толку от общего описания пользы?)
На вопрос "как использовать LLM для помощи при программировании" пост не отвечает вообще никак. Следует спрашивать общие советы по технологиям? Просить написать код? Просить проверить код? Какой кусок исходного кода следует включать в запрос чтобы совет был осмысленным? Насколько более эффективны интегрированные в ИСР средства вроде Copilot, которые сами (как-то) решают, какой кусок кода включить в контекст запроса?

в) Жутко многословно. Это универсальная беда LLM, но такие простыни "рыхлого" текста тяжело читать вообще, вдвойне тяжело читать с убитыми стилями. Постинг 44 KB текста - это то ли обещание "полезность этого текста превышает альтернативную полезность времени на его прочтение" (и тогда оно провалено), то ли сознательное пренебрежение временем читателей.

г) Про параллельность есть неточности, причём довольно важные. Скажем, существует параллельность на уровне исполнения ассемблерных команд, которая влияет на общее время исполнения вполне себе однопоточного кода. Вообще, следует разделять соображения параллельности и многопоточности, это не полные синонимы. Затем, в современной разработке многопоточность и проблемы ей порождаемые важны примерно везде: работаете с сетью - потоки, обрабатываете много данных - потоки, делаете UI приложения - потоки...
Reasonable
Member
Автор темы
1014/7021 ответов, #1 в рейтинге
2 года на iXBT, с ноября 2022
Чаще пишет в "Общий" (22%)
Швейцария, Белокаменный
Инфо Ответить
Reasonable MemberАвтор темы
1 месяц назад / 22 января 2025 17:40
Abstraction
То же что и при публикации машинных переводов: всякий желающий может получить тот же результат самостоятельно, и, что важнее, со временем получаемый самостоятельно результат улучшится, а "замороженный" текст форумного поста нет
Тут "попахивает" эгоизмом и ИИфобией типа, как русофобия! "Спрашиваешь чего это русские всегда неправы?" "А потому, что они русские!" Вот и также с ИИфобией! Да, и улучшения в ближайшее время не будет, по крайней мере с этим ИИ, поскольку он сам написал, что у него нет механизма самообучения и его создатели тоже пока не знают, как это сделать и "самообучение" ИИ действует только на 1 сеанс и уже не действует на другие сеансы и других пользователей!

Жутко многословно. Это универсальная беда LLM, но такие простыни "рыхлого" текста тяжело читать вообще, вдвойне тяжело читать с убитыми стилями. Постинг 44 KB текста - это то ли обещание "полезность этого текста превышает альтернативную полезность времени на его прочтение" (и тогда оно провалено), то ли сознательное пренебрежение временем читателей.
Да, немного БЛМ любит "потрепаться", но и люди здесь тоже не гении и не отличаются краткостью и разумностью понимания и, порой, несут такую чушь, что диву даёшься, что также теряешь кучу времени, однако об этом никто не говорит. И потом тебя никто не заставляет это всё читать!

Про параллельность есть неточности, причём довольно важные.
Так заметил - сообщи для общей пользы, а ты дислайки ставишь без объяснения, а, вообще, почти все кодеры, особенно ЧВСные, на подсознательном уровне чувствуют в ИИ для себя угрозу, вот так и реагируют, как ты!
Abstraction
Member
95/337 ответов, #7 в рейтинге
Недавно на iXBT, с апреля 2024
Чаще пишет в "Наука" (50%)
Инфо Ответить
A
Abstraction Member
1 месяц назад / 22 января 2025 18:13
Reasonable
И потом тебя никто не заставляет это всё читать!

Верно. Но это верно для любой темы любого подфорума, нет? Я использовал опцию "поругать" в смысле "я предпочёл бы, чтобы таких тем было меньше, а не больше". Мои предпочтения, моё право их иметь.

Логика "я делаю хоть что-то, лучше делать хоть что-то, чем не делать ничего" имеет право на жизнь, но в данном случае я не вижу, кому вообще адресован этот пост, для кого полезность его чтения была бы положительной. Если среди читателей этого форума существуют люди кроме автора которым он оказался фактически полезен, мне было бы интересно об этом услышать.
Reasonable
Member
Автор темы
1015/7024 ответов, #1 в рейтинге
2 года на iXBT, с ноября 2022
Чаще пишет в "Общий" (22%)
Швейцария, Белокаменный
Инфо Ответить
Reasonable MemberАвтор темы
1 месяц назад / 22 января 2025 18:24
Abstraction
Если среди читателей этого форума существуют люди кроме автора которым он оказался фактически полезен, мне было бы интересно об этом услышать
Поживём - увидим!
А, вообще, посты типа твоего предыдущего, "обламывают" всякое желание что-либо делать на пользу народу и форуму! А полезность, думаю, всё же есть, особенно, для тех, кому доступ заблокировали на ИИ. Вот , к примеру, у нас недавно опять заблокировали доступ к ChatGPT.
Edik
Member
105/1608 ответов, #14 в рейтинге
18 лет на iXBT, с февраля 2007
23 фото на iXBT.photo
Чаще пишет в "Видеозахват" (63%)
Инфо Ответить
E
Edik Member
1 месяц назад / 29 января 2025 01:18
Reasonable
Привет. Ты новый китайский ИИ deepseek пробовал тестировать? Как он по сравнению с другими ИИ?
https://www.deepseek.com/
Reasonable
Member
Автор темы
1017/7138 ответов, #1 в рейтинге
2 года на iXBT, с ноября 2022
Чаще пишет в "Общий" (22%)
Швейцария, Белокаменный
Инфо Ответить
Reasonable MemberАвтор темы
1 месяц назад / 29 января 2025 01:58
Edik
Ты новый китайский ИИ deepseek пробовал тестировать? Как он по сравнению с другими ИИ?
https://www.deepseek.com/

Я на днях случайно узнал о нём в новостях, что в РФ возникли проблемы с выходом на него. Попробовал сам - не пускают. Вчера прочитал, что америкосы сильно забеспокоились по поводу лидерства Дипсика и Трамп выделил дохрена бабла на развитие ИИ.
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Последние обсуждения в Конференции
23:19Поделимся настроением (что вы только что посмотрели или смотрите в данный момент) Кино
23:18Игра в ассоциации Флуд
23:18Будет ли война России с Украиной? Политика
23:17Слышите ли лично вы, разницу между FLAC, MP3, DSD? Стерео
23:17Китайские автомобили. Обсудим? Авто
23:16Отечественные микропроцессоры. Состояние и перспективы Процессоры
23:16Домашний спортзал 30 м². Подбираю инвентарь. Спорт
23:15Обработка в AviSynth видео, полученного после оцифровки с VHS и других аналоговых кассет Видеозахват
23:14Проводной интернет от Билайн (Beeline) Рынок
23:13AMS1117 вырубается от радиосигнала Эл. устройства
23:10Выбор мобильной рабочей станции: неттоп, мини-ПК Ноутбуки
23:08Creative Sound Blaster X5- внешняя (USB Type C) звуковая карта на базе 2х Cirrus Logic CS43198 Цифр.звук
23:07Лунная афера США - замена высадки на Луну беспилотной программой и павильонными съемками. Наука
23:07Ошибка - потоковая передача мультимедиа не включена OС и сист. ПО
23:06Восстановление таблицы разделов Накопители
23:05Выбор холодильников дороже $400 Бытовая техника
23:04unpacking + рабочее место Маковеда MacLife
23:02Кто-то хочет в СССР? История
23:01Ваше мнение про оператора связи Tinkoff (Тинькофф) Моб. операторы
23:01OLED телевизоры LG ДК TV
21:55В России переписали цены на кроссовер GAC GS3 и внедорожник GAC GS8. Сколько сейчас стоит «китайский Cadillac»?
21:38Намного выгоднее новых GeForce RTX 50, и даже с трассировкой лучей всё хорошо. Тесты Radeon RX 9070 и 9070 XT показывают, на что способны новинки
20:45В России создали сверхгладкие зеркала из монокристаллического кремния для мощных синхротронов
20:33Аналог Toyota Camry от Chery стал еще лучше. Представлен Chery Arrizo 8 2025 — с 2,0-литровым мотором на 254 л.с. и 8-ступенчатым «автоматом»
19:25МТС ждёт 20 тысяч российских базовых станций до 2030 года
17:55Volkswagen Tiguan на минималках. В Россию привезли совершенно новый Volkswagen Tharu XR: 6-ступенчатый «автомат» за 2,45 млн рублей
17:47Представлен Apple M3 Ultra — самый быстрый чип в истории Mac. 32 ядра CPU, 80 ядер GPU и до 512 ГБ унифицированной памяти
17:36Apple выдает одну новинку за другой. Представлен MacBook Air на мощном чипе M4 с 10-ядерным процессором
17:03G-поле в новой модели гравитации проливает свет на природу тёмной материи
16:53КамАЗ, подвинься. В Россию едет китайский «Король дорог» с мотором мощностью 840 л.с. — это Sitrak С9H