Учим, и добавляем в резюме
Взято из телеграмма - Инкогнито
Взято из телеграмма - Инкогнито
В этой статье вместе с техническим экспертом Ауриги Владимиром Суворовым рассказываем о переносе программ на С++ из Windows в Linux. Эта тема включает в себя ряд особенностей, которые будут особенно актуальны для разработчиков, занимающихся портированием приложений. Мы рассмотрим основные различия между Windows и Linux в контексте работы с потоками, а также предоставим рекомендации по выбору библиотек в зависимости от задач проекта.
Поехали!
Для чего нужен перенос программ на Linux?
Миграция на Linux может быть необходима для обеспечения стабильности и непрерывной работы инфраструктуры компаний, особенно в ситуациях, когда становится сложнее продлить или приобрести новые лицензии и получить техническую поддержку от вендоров.
Типы многозадачности
Windows поддерживает два типа многозадачности: преемственную (preemptive multitasking) и кооперативную (cooperative multitasking). В преемственной многозадачности операционная система равномерно распределяет время процессора между потоками, переключая контексты выполнения. В кооперативной многозадачности каждый поток должен явно передавать управление другим потокам. Linux использует только преемственную многозадачность.
Процессы
В операционной системе Windows процессы более изолированы друг от друга благодаря использованию отдельных адресных пространств. При этом каждый поток имеет собственный стек и уровень приоритета выполнения. Кроме того, в Windows существует понятие «фибров», которые являются легковесными потоками и используют стеки других потоков.
В операционной системе Linux также обеспечивается изоляция процессов путем выделения каждому процессу своего собственного адресного пространства. Многопоточность в Linux реализована на уровне библиотеки, при этом ядро операционной системы предоставляет механизмы для управления потоками и распределения ресурсов. В Linux также существуют «процессы-потомки», которые создаются родительским процессом и имеют свои собственные адресные пространства. Это позволяет процессу-предку создавать и управлять отдельными процессами, которые могут выполнять свои задачи независимо друг от друга.
Кроссплатформенные библиотеки для работы с потоками
Как это работает: при переносе программы из Windows в Linux рекомендуется сначала выбрать подходящую кроссплатформенную библиотеку, перенести код на нее, а затем скомпилировать код для работы в Linux.
Ниже приведены примеры библиотек, которыми инженеры из Ауриги активно пользуются при портировании и миграции проектов. Они подходят для большинства задач, но у каждой из них мы указали наиболее распространенные.
1. C++ Standard Thread Library — это библиотека, предоставляемая стандартом языка C. Она предоставляет переносимый и удобный интерфейс для работы с потоками в C++. Хорошо интегрируется с другими компонентами языка, но имеет ограниченные возможности: не поддерживает некоторые специфические функциональности и требует хорошего понимания многопоточности для безопасного использования. Для более сложных сценариев могут потребоваться дополнительные библиотеки или фреймворки.
2. Intel Threading Building Blocks – кроссплатформенная библиотека для разработки приложений на C++, которая может использоваться для разработки приложений под различные операционные системы, в том числе Linux. Эта библиотека хорошо зарекомендовала себя при переносе PPL (Parallel Patterns Library) библиотеки, разработанной компанией Microsoft для работы с многопоточностью на C++.
3. Qt — это кроссплатформенный фреймворк для разработки приложений на C++, который также предоставляет классы для работы с потоками. В наших проектах мы часто используем библиотеку Qt для переноса функциональности, основанной на MFC (Microsoft Foundation Classes) — классах, предоставляемых Microsoft для разработки Windows-приложений.
4. SDL (Simple DirectMedia Layer) — это кроссплатформенная библиотека, разработанная для создания мультимедийных приложений на C++. SDL рекомендуется для работы с изображениями, звуком и вводом.
5. Boost C++ Libraries — это кроссплатформенная библиотека для разработки приложений на C++, которая поддерживает различные операционные системы, включая Linux. Boost рекомендуется использовать в случаях, когда требуется перенос приложений, использующих ATL (Active Template Library) — набор классов Microsoft для разработки Windows-приложений.
6. OpenMP (Open Multi-Processing) — это кроссплатформенная библиотека, позволяющая создавать многопоточные приложения с использованием директив препроцессора. Библиотека особенно полезна в ситуациях, когда требуется обработка большого объема данных параллельно.
7. Библиотека libuv предоставляет возможности для создания многопоточных приложений на C++. Она поддерживается на различных платформах, включая Linux, и предоставляет простой и удобный API для работы с потоками. Наши инженеры обнаружили, что libuv является наиболее удобным и эффективным средством для переноса кода, основанного на Windows Thread Pool API, на Linux или другие платформы.
В следующей статье расскажем о переносе программ на С++ из Windows в Linux в тех случаях, когда готового решения нет.
Больше статей о работе с потоками, а также на другие технические темы в официальном блоге Ауриги.
Взято из телеграмма - Инкогнито
Данная книга предлагает читателю практический подход к изучению языка программирования С++. Написанная опытными программистами Огневой М. и Кудриной Е., она представляет собой полноценный курс, который подходит как начинающим, так и опытным программистам.
Книга начинается с основных понятий и принципов языка С++, постепенно переходя к более сложным темам. В каждой главе представлены теоретические сведения, примеры кода и задачи для самостоятельного решения, что помогает читателю закрепить полученные знания.
Особое внимание уделено практическим примерам, которые часто встречаются в различных областях программирования. Авторы подробно объясняют основные концепции языка, такие как объектно-ориентированное программирование, контейнеры и алгоритмы, работы с файлами, многопоточность и т.д.
Кроме того, книга представляет последние изменения, которые произошли в языке программирования C++, включая новые функции и стандарты. Написанная актуально курсе 2022 года, она помогает читателю быть в курсе последних трендов в программировании на языке C++.
Данная книга является незаменимым ресурсом для тех, кто хочет освоить язык программирования С++ с нуля или углубить свои знания для достижения более высокого уровня профессионализма.
Всем привет.
Предложили работу на роботизированной линии. Используются роботы Кавасаки.
Конечно будет небольшое обучение, но основную масса знаний, похоже, придется приобретать самому.
Из информации в инете - программирование С++.
Подскажите люди добрые, с чего начать.
Работа не оператора ( тыкать вкл/выкл).
Немного обучался на робот Кука.
Совсем немного писал прг, работало.
Взято из телеграмма - Инкогнито