Потоки thread в net это: Потоки и работа с ними
Потоки и работа с ними
-
- Чтение занимает 2 мин
-
В этой статье
Многопоточность позволяет увеличивать скорость реагирования приложения и, если приложение работает в многопроцессорной или многоядерной системе, его пропускную способность.Multithreading allows you to increase the responsiveness of your application and, if your application runs on a multiprocessor or multi-core system, increase its throughput.
Процессы и потокиProcesses and threads
Процесс — это исполнение программы.A process is an executing program. Операционная система использует процессы для разделения исполняемых приложений. An operating system uses processes to separate the applications that are being executed. Поток — это основная единица, которой операционная система выделяет время процессора.A thread is the basic unit to which an operating system allocates processor time. Каждый поток имеет приоритет планирования и набор структур, в которых система сохраняет контекст потока, когда выполнение потока приостановлено.Each thread has a scheduling priority and maintains a set of structures the system uses to save the thread context when the thread’s execution is paused. Контекст потока содержит все сведения, позволяющие потоку безболезненно возобновить выполнение, в том числе набор регистров процессора и стек потока.The thread context includes all the information the thread needs to seamlessly resume execution, including the thread’s set of CPU registers and stack. Несколько потоков могут выполняться в контексте процесса.Multiple threads can run in the context of a process. Все потоки процесса используют общий диапазон виртуальных адресов. All threads of a process share its virtual address space. Поток может исполнять любую часть программного кода, включая части, выполняемые в данный момент другим потоком.A thread can execute any part of the program code, including parts currently being executed by another thread.
Примечание
Платформа .NET Framework предоставляет способ изоляции приложений в процессе с помощью доменов приложений..NET Framework provides a way to isolate applications within a process with the use of application domains. (Домены приложений недоступны в .NET Core.) Дополнительные сведения см. в разделе Домены приложений и потоки в статье Домены приложений.(Application domains are not available on .NET Core.) For more information, see the Application domains and threads section of the Application domains article.
По умолчанию программа .NET запускается с одним потоком, часто называемым основным потоком.By default, a .NET program is started with a single thread, often called the primary thread. Тем не менее она может создавать дополнительные потоки для выполнения кода параллельно или одновременно с основным потоком.However, it can create additional threads to execute code in parallel or concurrently with the primary thread. Эти потоки часто называются рабочими потоками.These threads are often called worker threads.
Цели применения нескольких потоковWhen to use multiple threads
Используйте несколько потоков, чтобы увеличить скорость реагирования приложения и воспользоваться преимуществами многопроцессорной или многоядерной системы, чтобы увеличить пропускную способность приложения.You use multiple threads to increase the responsiveness of your application and to take advantage of a multiprocessor or multi-core system to increase the application’s throughput.
Представьте себе классическое приложение, в котором основной поток отвечает за элементы пользовательского интерфейса и реагирует на действия пользователя.Consider a desktop application, in which the primary thread is responsible for user interface elements and responds to user actions. Используйте рабочие потоки для выполнения длительных операций, которые, в противном случае будут занимать основной поток, в результате чего пользовательский интерфейс будет недоступен.Use worker threads to perform time-consuming operations that, otherwise, would occupy the primary thread and make the user interface non-responsive. Для более оперативной реакции на входящие сообщения или события также можно использовать выделенный поток связи с сетью или устройством.You can also use a dedicated thread for network or device communication to be more responsive to incoming messages or events.
Если программа выполняет операции, которые могут выполняться параллельно, можно уменьшить общее время выполнения путем выполнения этих операций в отдельных потоках и запуска программы в многопроцессорной или многоядерной системе.If your program performs operations that can be done in parallel, the total execution time can be decreased by performing those operations in separate threads and running the program on a multiprocessor or multi-core system. В такой системе использование многопоточности может увеличить пропускную способность, а также повысить скорость реагирования.On such a system, use of multithreading might increase throughput along with the increased responsiveness.
Как использовать многопоточность в .NETHow to use multithreading in .NET
Начиная с .NET Framework 4, для многопоточности рекомендуется использовать библиотеку параллельных задач (TPL) и Parallel LINQ (PLINQ).Starting with .NET Framework 4, the recommended way to utilize multithreading is to use Task Parallel Library (TPL) and Parallel LINQ (PLINQ). Дополнительные сведения см. в разделе Параллельное программирование.For more information, see Parallel programming.
Библиотека параллельных задач и PLINQ полагаются на потоки ThreadPool.Both TPL and PLINQ rely on the ThreadPool threads. Класс System.Threading.ThreadPool предоставляет приложения .NET с пулом рабочих потоков.The System.Threading.ThreadPool class provides a .NET application with a pool of worker threads. Также можно использовать потоки из пула потоков.You can also use thread pool threads. Дополнительные сведения см. в разделе Управляемый пул потоков.For more information, see The managed thread pool.
Наконец, можно использовать класс System.Threading.Thread, который представляет управляемый поток.At last, you can use the System.Threading.Thread class that represents a managed thread. Дополнительные сведения см. в разделе Использование потоков и работа с потоками.For more information, see Using threads and threading.
Несколько потоков могут требовать доступ к общему ресурсу.Multiple threads might need to access a shared resource. Чтобы сохранить ресурс в неповрежденном состоянии и избежать состояния гонки, необходимо синхронизировать доступ к нему потоков.To keep the resource in a uncorrupted state and avoid race conditions, you must synchronize the thread access to it. Вы также можете координировать взаимодействие нескольких потоков.You also might want to coordinate the interaction of multiple threads. Платформа .NET предоставляет ряд типов для синхронизации доступа к общему ресурсу или координации взаимодействия потоков..NET provides a range of types that you can use to synchronize access to a shared resource or coordinate thread interaction. Дополнительные сведения см. в разделе Обзор примитивов синхронизации.For more information, see Overview of synchronization primitives.
Исключения следует обрабатывать в потоках.Do handle exceptions in threads. Необработанные исключения в потоках, как правило, приводят к завершению процесса.Unhandled exceptions in threads generally terminate the process. Дополнительные сведения см. в статье Исключения в управляемых потоках.For more information, see Exceptions in managed threads.
См. такжеSee also
Новые гости в Мукране. Хроники МГП Северный поток-2 за 7-9 ноября 2020 г.
В Мукран подошла группа судов, среди которых оказался и старый знакомец Kamara
Москва, 9 ноя — ИА Neftegaz. RU. Перемещения судов потенциального флота достройки магистрального газопровода (МГП) Северный поток-2 продолжаются.
Активность судов, которые могут быть связаны с проектом, сосредоточена в 2 ключевых районах:
- в порту Мукран в Германии у причалов логистического терминала МГП Северный поток-2 и в его окрестностях,
- в порту Калининград.
Об этом свидетельствуют данные сервиса отслеживания судов MarineTraffic.
Напряжение возрастает.
Ожидалось, что строительство газопровода возобновится в начале ноября 2020 г, но этого нет произошло.
Уже прошли выборы президента США, а строительство стоит.
Впрочем, маловероятно, что Д. Байден — ярый сторонник возобновляемых источников энергии ( ВИЭ), таки решится прижать и так еле дышащую сланцевую индустрию Америки.
США продолжат продвигать свой СПГ на европейский рынок, хотя нельзя исключать давления на Д. Байдена левого крыла Демократической партии с целью ограничения добычи углеводородов в будущем.
Мукран
У основного причала логистического терминала МГП Северный поток-2 в порту Мукран (терминал Юг) по-прежнему остается краново-монтажное трубоукладочное судно (КМТУС) Академик Черский.
С момента возвращения
российского трубоукладчика с испытаний системы якорного позиционирования, проходивших в районе Куршской косы, прошло больше 1,5 недель, но о ходе подготовки судна к возобновлению строительства МГП Северный поток-2 более-менее определенной информации нет.
Рядом с Черским обычно находится 1 из 2 многофункциональных буксиров-якорезаводчиков, вместе с которыми трубоукладчик проходил испытания в районе г. Калининграда.
6 ноября 2020 г. буксир Умка ушел от Черского на якорную стоянку к востоку от Мукрана, а ему на смену пришел Финвал, остающийся на данный момент рядом с Черским.
У причалов терминала Север собралась представительная компания судов — Kamara, Geo Ocean IV, DCS Adventurer и MTS Valour.
Наиболее интересным из них является якорезаводчик Kamara под флагом Мальты, пришедший из порта Вильгельмсхафен 7 ноября 2020 г.
В Мукран Kamara ранее уже заходил
— в январе 2020 г.
Тогда Черский еще не начал свою одиссею
из г. Находки в порт Мукран, а основным кандидатом на завершение строительства МГП Северный поток-2 называлась трубоукладочная баржа (ТУБ) Фортуна.
Баржа имеет современную 12-точечную систему якорного позиционирования, поэтому ей требуется поддержка буксиров с динамическим позиционированием.
В качестве такого партнера ранее назывался Kamara, а также Artemis Offshore.
Однако позднее стало понятно, что ТУБ Фортуна не будет участвовать в проекте Северный поток-2, подтверждением чему стал переход баржи из Мукрана в Росток, а затем в Висмар, где она находится до сих пор.
Исследовательское судно Geo Ocean IV пришло из района морского ветропарка Аркона, расположенного в 35 км к северо-востоку от о. Рюген в Балтийском море.
С проектом Северный поток-2 судно, скорее всего, не связано.
Еще одно судно, прибывшее в Мукран — DCS Adventurer под флагом Кипра — представляет собой мелкосидящий многоцелевой плавучий кран.
Кран прибыл в Мукран вечером 6 ноября 2020 г. из датского порта Редбюхаун.
Судно оборудовано 2 гидравлическими кранами, мощными лебедками и 4-точечной системой швартовки.
Судя по параметрам, скорее всего, судно также будет задействовано в работах в ветропарке или каком-либо другом проекте вблизи Мукрана, но не в строительстве МГП Северный поток-2.
Также к проекту не имеет отношение и буксир MTS Valour, ходящий под британским флагом.
В окрестностях Мукрана
На якорной стоянке порта Засниц к востоку от порта Мукран находятся 2 якорезаводчика.
Буксир Умка вернулся от Черского 6 ноября 2020 г.
С 5 ноября 2020 г. на стоянке остается якорезаводчик Artemis Offshore, пришедший из Калининграда вслед за судном снабжения Остап Шеремета, уже вернувшимся обратно.
Другая якорная стоянка порта Засниц, расположенная к юго-востоку от Мукрана, часто используемая суда потенциального флота достройки МГП Северный поток-2, на данный момент свободна.
Калининград
В район Калининграда из порта Мукран 7 ноября 2020 г. вернулось судно снабжения Остап Шеремета.
Подождав на якорной стоянке перед входом в Калининградский залив, судно вошло в Калининградский судоходный канал и встало рядом с сестринским судном Иван Сидоренко у причала в порту Светлый.
В самом Калининграде находятся 2 многофункциональных ледокольных судна (МФЛС) Юрий Топчев и Владислав Стрижов.
Якорезаводчик Errie, выключивший AIS 5 ноября 2020 г. и с тех пор не обозначавший своего местоположения, вероятно остается в Калининграде.
для чего они нужны и на что влияют
Опубликовано 10.06.2018 автор Андрей Андреев — 2 комментария
Добрый день. Сегодня хотелось бы разобрать, что такое потоки в процессоре. Те самые, о функциях и возможностях которых большинство и не догадывается, однако любят хвастаться остальным.
Если провести сравнение процессоров разных поколений, то можно заметить одну интересную тенденцию: многопоточность – штука полезная и здорово повышает суммарную производительность системы.
Начнем с того, что каждый современный процессор построен на физических ядрах с определенной частотой. Допустим, 1 ядро имеет тактовую частоту в 3 ГГц, т.е. может выполнить 3 млрд вычислительных операций за секунду (такт). Но современные ОС (Windows, Linux, MacOS) запускают более 3 млрд процессов, т.е. пользователь начинает сталкиваться с таким понятием как прерывание: ЦП физически не успевает обрабатывать все сразу и начинает переключаться на самые приоритетные задачи.
Логика здесь элементарная: присмотреться к многоядерным и многопоточным решениям. Разгон не дает линейного прироста в производительности, иначе такие гиганты как Intel и AMD выпускали бы процессоры на 5–6 и более ГГц.
Польза от повышения частоты есть, но она нивелируется увеличенным энергопотреблением и сокращением срока службы ЦП.
Многопоточность и все о ней
Многие наверняка слышали выражения из серии «2 потока», «4 потока», «8 потоков» и т.д. При этом физических ядер зачастую было в 2 раза меньше.
Эта технология имеет название HyperThreading (Intel) или SMT (AMD).
Многопоточность у красных появилась совсем недавно, с выходом чипов Ryzen на совершенно новом техпроцессе. Что это такое – тема отдельной статьи.
Цель функции заключается в том, что на 1 ядро может одновременно обрабатывать несколько потоков данных. Пока первый поток простаивает, а второй занимается вычислением, запущенное приложение может воспользоваться вакантной логической мощью для своих целей. В результате, прерывания случаются гораздо реже, а вы не ощущаете тормозов и прочих неудобств при работе.
Недостаток технологии заключается в следующем:
- оба потока обращаются к единой кэш-памяти 2 и 3 уровней;
- тяжелые вычислительные процессы могут вызвать конфликт в системе.
Если очень грубо, то все кирпичи с одного места на другое можно перенести в одной руке (1 поток), либо в двух (2 потока), но человек при этом один (1 ядро) и устает одинаково при любых условиях, хоть его производительность фактически увеличивается вдвое. Иными словами, мы упираемся в производительность ЦП, а конкретней в его частоту.
Знакомы с понятием Turbo Boost? Процесс кратковременно повышает частоту процессора на несколько сотен мегагерц в особо сложных сценариях, чтобы вы не испытывали проблем при обработке сложных
Использование резьбы и нарезания резьбы | Документы Microsoft
- 3 минуты на чтение
В этой статье
С помощью .NET вы можете писать приложения, которые выполняют несколько операций одновременно. Операции, потенциально способные задержать другие операции, могут выполняться в отдельных потоках, этот процесс известен как многопоточность или свободная распараллеливание .
Приложения, использующие многопоточность, лучше реагируют на ввод данных пользователем, поскольку пользовательский интерфейс остается активным, поскольку задачи, интенсивно использующие процессор, выполняются в отдельных потоках. Многопоточность также полезна при создании масштабируемых приложений, поскольку вы можете добавлять потоки по мере увеличения рабочей нагрузки.
Как создать и начать новую беседу
Вы создаете новый поток, создавая новый экземпляр класса System.Threading.Thread и передавая конструктору имя метода, который вы хотите выполнить в новом потоке.Чтобы запустить созданный поток, вызовите метод Thread.Start. Дополнительные сведения и примеры см. В статье «Создание потоков и передача данных во время запуска» и в справочнике по API потоков.
Как остановить поток
Чтобы завершить выполнение потока, используйте System.Threading.CancellationToken. Он обеспечивает унифицированный способ совместной остановки потоков. В разделе Отмена в управляемых потоках.
Иногда невозможно остановить поток совместно, потому что он запускает сторонний код, не предназначенный для совместной отмены.В этом случае вы можете захотеть принудительно прекратить его выполнение. Чтобы принудительно завершить выполнение потока, в .NET Framework можно использовать метод Thread.Abort. Этот метод вызывает исключение ThreadAbortException в потоке, в котором он был вызван. Для получения дополнительной информации см. Удаление потоков. Метод Thread.Abort не поддерживается в .NET Core. Если вам нужно принудительно прекратить выполнение стороннего кода в .NET Core, запустите его в отдельном процессе и используйте Process.Kill.
Система.Threading.CancellationToken недоступен в версиях .NET Framework 4. Чтобы остановить поток в более старых версиях .NET Framework, реализуйте совместную отмену вручную с помощью методов синхронизации потоков. Например, вы можете создать изменчивое логическое поле shouldStop
и использовать его для запроса остановки кода, выполняемого потоком. Дополнительные сведения см. В разделах volatile в Справочнике по C # и System.Threading.Volatile.
Используйте метод Thread.Join, чтобы заставить вызывающий поток ждать завершения останавливаемого потока.
Как: приостановить или прервать поток
Вы используете метод Thread.Sleep, чтобы приостановить текущий поток на указанное время. Вы можете прервать заблокированный поток, вызвав метод Thread.Interrupt. Дополнительные сведения см. В разделе Приостановка и прерывание потоков.
Свойства резьбы
В следующей таблице представлены некоторые свойства резьбы:
Объект | Описание |
---|---|
IsAlive | Возвращает true , если поток был запущен и еще не завершился нормально или не был прерван. |
IsBackground | Возвращает или задает логическое значение, которое указывает, является ли поток фоновым потоком. Фоновые потоки похожи на потоки переднего плана, но фоновый поток не предотвращает остановку процесса. После остановки всех потоков переднего плана, принадлежащих процессу, среда CLR завершает процесс, вызывая метод Abort для фоновых потоков, которые все еще активны. Для получения дополнительной информации см. Передний план и Фоновые потоки. |
Имя | Получает или задает имя потока.Чаще всего используется для обнаружения отдельных потоков при отладке. |
Приоритет | Получает или задает значение ThreadPriority, которое используется операционной системой для определения приоритетов планирования потоков. Дополнительные сведения см. В разделах «Планирование потоков» и «Справочник по ThreadPriority». |
Состояние потока | Получает значение ThreadState, содержащее текущие состояния потока. |
См. Также
Нитки и нарезание резьбы | Документы Microsoft
- 2 минуты на чтение
В этой статье
Многопоточность позволяет увеличить скорость отклика вашего приложения и, если ваше приложение работает в многопроцессорной или многоядерной системе, увеличить его пропускную способность.
Процессы и потоки
Процесс — это исполняемая программа. Операционная система использует процессы для разделения выполняемых приложений. Поток — это базовая единица, которой операционная система выделяет время процессора. Каждый поток имеет приоритет планирования и поддерживает набор структур, которые система использует для сохранения контекста потока, когда выполнение потока приостанавливается. Контекст потока включает всю информацию, необходимую потоку для беспрепятственного возобновления выполнения, включая набор регистров ЦП и стек потока.В контексте процесса могут выполняться несколько потоков. Все потоки процесса совместно используют свое виртуальное адресное пространство. Поток может выполнять любую часть программного кода, включая части, выполняемые в данный момент другим потоком.
Примечание
.NET Framework предоставляет способ изолировать приложения внутри процесса с использованием доменов приложений . (Домены приложений недоступны в . NET Core.) Дополнительные сведения см. В разделе «Домены и потоки приложений» статьи «Домены приложений».
По умолчанию программа .NET запускается с одним потоком, часто называемым первичным потоком . Однако он может создавать дополнительные потоки для выполнения кода параллельно или одновременно с основным потоком. Эти потоки часто называют рабочими потоками .
Когда использовать несколько потоков
Вы используете несколько потоков, чтобы увеличить скорость отклика вашего приложения и использовать преимущества многопроцессорной или многоядерной системы для увеличения пропускной способности приложения.
Рассмотрим настольное приложение, в котором основной поток отвечает за элементы пользовательского интерфейса и реагирует на действия пользователя. Используйте рабочие потоки для выполнения трудоемких операций, которые в противном случае заняли бы основной поток и сделали бы пользовательский интерфейс невосприимчивым. Вы также можете использовать выделенный поток для связи с сетью или устройством, чтобы лучше реагировать на входящие сообщения или события.
Если ваша программа выполняет операции, которые могут выполняться параллельно, общее время выполнения можно уменьшить, выполняя эти операции в отдельных потоках и выполняя программу в многопроцессорной или многоядерной системе.В такой системе использование многопоточности может увеличить пропускную способность вместе с повышенной отзывчивостью.
Как использовать многопоточность в .NET
Начиная с .NET Framework 4, рекомендуемым способом использования многопоточности является использование библиотеки параллельных задач (TPL) и параллельного LINQ (PLINQ). Для получения дополнительной информации см. Параллельное программирование.
И TPL, и PLINQ полагаются на потоки ThreadPool. Класс System.Threading.ThreadPool предоставляет .NET-приложению пул рабочих потоков.Вы также можете использовать потоки пула потоков. Дополнительные сведения см. В разделе Пул управляемых потоков.
Наконец, вы можете использовать класс System.Threading.Thread, представляющий управляемый поток. Дополнительные сведения см. В разделе Использование потоков и потоковой передачи.
Для доступа к общему ресурсу может потребоваться несколько потоков. Чтобы сохранить ресурс в неповрежденном состоянии и избежать состояний гонки, вы должны синхронизировать доступ потока к нему. Вы также можете координировать взаимодействие нескольких потоков..NET предоставляет ряд типов, которые можно использовать для синхронизации доступа к общему ресурсу или координации взаимодействия потоков. Для получения дополнительной информации см. Обзор примитивов синхронизации.
Обрабатывать исключения в потоках. Необработанные исключения в потоках обычно завершают процесс. Для получения дополнительной информации см. Исключения в управляемых потоках.
См. Также
потоков ASP.NET — параметры потоков в рабочих процессах IIS
Этот пост поможет вам разобраться в ASP.NET и описать определения, как проверить и как отредактировать. Параметры потоков приложений . NET могут быть отдельной темой. Приведенная здесь информация не охватывает все приложения .NET, такие как BizTalk Server Host, или ваши собственные коды .NET. Подробные параметры в этом сообщении относятся только к ASP.NET в IIS.
«Настройка параметров потока» может быть хорошей темой для обсуждения после этого введения. И этот пост не рекомендует вам изменять значения по умолчанию, но дает вам идеи по управлению параметрами.
Параметр потока ASP (не ASP.NET)
Раньше в собственном коде Win32 IIS запускал приложения ASP, и его параметр потока довольно прост. В IIS есть параметр « ASPProcessorThreadMax» , что составляет 25 (на ЦП) по умолчанию , определенное в метабазе IIS (metabase.xml в c: \ windows \ system32 \ inetsrv)
http://msdn.microsoft.com/en-us/library/ms525577(v=vs.90).aspx
(Для получения дополнительных сведений о свойстве метабазы см. Ссылку выше)
Итак, это означает, что если есть 26 приложений Active Server Pages, они требуют очень много времени для завершения, тогда 25 ASP работают в рабочих потоках и 1 ASP должен оставаться в очереди, называемой «ASP Request Queue». ‘ очень долгое время.
Другими словами, если IIS имеет 2 ЦП и 60 ASP для вечной работы, то 50 (= 25 × 2) ASP обрабатываются рабочими потоками, а остальные 10 ASP должны оставаться в «очереди запросов ASP».
Вышеупомянутая концепция очень важна. Это поможет вам понять, как отслеживать приложения ASP и как определять оптимальное количество рабочих потоков. Например, если счетчик производительности — «Active Server Pages \ Requests Queued» счетчик показывает ненулевое значение, это означает, что есть запросы в очереди, что означает, что все рабочие потоки заняты.
Это также означает, что есть задержка, и вам может потребоваться увеличить #threads, если процент использования ЦП не является плохим.
Таким образом, ASPProcessorThreadMax означает «количество рабочих потоков для ASP, на процессор, на рабочий процесс (w3wp)».
Введение
В управляемых кодах, таких как приложения ASP. NET, обычно трудно угадать, сколько потоков работает в приложениях ASP.NET или .NET. В этой статье рассматриваются потоки «ASP.NET», а не «.NET Application, потому что это отдельная история.
Прежде чем двигаться дальше, необходимо понять, что означают потоки и что означает процесс. В зависимости от того, что вы видели, могут быть разные определения. В этой статье процесс больше о рабочем процессе IIS, W3WP.exe, который включает и управляет пулами потоков.
Процесс — это изолированное пространство памяти, использующее адреса виртуальной памяти и включающее 1 или несколько потоков, которые выполняются процессорами.Один процессор запускает по одному потоку за раз, поэтому параметры потока обычно умножаются на #CPU.
В процессе W3WP можно предположить, что поток выполняет одно приложение, например report.aspx. Итак, чтобы одновременно запускать 2 ASP, 2 процессора должны запускать их в нескольких потоках — это «рабочие потоки». (W3WP также имеет другие типы ниток)
Итак, если рабочий процесс имеет много типов приложений для запуска, таких как ASP (*. Asp), ASP.NET (*. Aspx) и веб-службы (*.asmx) статус потоков будет таким, как показано выше. Вы можете видеть, что процесс w3wp запускает 7 приложений в 7 потоках.
Для получения дополнительных сведений о рабочих процессах в IIS см. Ссылку
https://fullsocrates.wordpress.com/2012/07/25/iisreset-vs-recycling-application-pools/
Потоки ASP.NET
Приложения ASP.NET, включая веб-службы, используют следующие параметры потока:
- maxWorkerThreads
- maxIoThreads
- минWorkerThreads
- minIoThreads
- минFreeThreads
- минLocalRequestFreeThreads
Т.к.NET Framework2.0 была представлена функция Auto-Config, которая, кажется, может автоматически настраивать любые подходящие значения для ваших приложений ASP.NET. Таким образом, вы не можете найти вышеуказанные параметры потока в файле machine.config, хотя они настроены со значениями по умолчанию.
Если вы откроете файл machine.config в «C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ CONFIG», он будет иметь только
Если вы увидите фактические значения и подробную информацию о параметрах потока, вы обнаружите, что «autoConfig» — неправильное имя, «hideConfig» лучше, оно просто для того, чтобы скрыть значения по умолчанию.
В большинстве случаев настройка параметров потока ASP.NET заключается в настройке следующих параметров: проверка параметров с их значениями по умолчанию (в IIS6, более ранняя версия .NET Framework 3.5 SP1),
Значения по умолчанию | Описание | |
maxWorkerThreads | 20 | потоков для запуска приложений ASPX |
maxIoThreads | 20 | потоков ввода-вывода среди компонентов, связанных с IIS |
минFreeThreads | 8 | Для обработки удаленных запросов (веб-служба). Свободный поток здесь означает холостой поток, который готов к запуску |
минLocalRequestFreeThreads | 4 | Для обработки локальных запросов (веб-служба) в рабочем процессе. |
макс. Соединение | 12x # ЦП | Количество подключений для удаленных веб-служб из локального, раньше было 2 в более ранней версии .NET |
Параметры потока по умолчанию для ASP.NET в IIS6, IIS7, IIS7.5 и IIS8 не имеют одинаковых значений среди версий, я собираюсь перечислить их в следующем посте о настройке параметров потока ASP.NET. Эта статья предназначена для понимания параметров резьбы
См. Рисунок ниже, он предназначен для понимания параметров и их ролей,
Итак, как только вы проверите значения Auto-Config по умолчанию, вы обнаружите, что это не что иное, как HideConfig (скрытые конфигурации), потому что никаких автоматических действий не происходит. Значения взяты из предыдущей версии .NET framework, и это просто хорошие значения для начала.
Я запуталась. Меня долгое время смущала настройка Auto-config, потому что я думал, что Auto-config сделает что-то большее, например, автоматическую оптимизацию и настройку для использования рекомендуемых значений,
(упоминается в KB –http: // support .microsoft.com / kb / 821268,
Конфликты, низкая производительность и взаимоблокировки при отправке запросов веб-служб из ASP.NET-приложений)
В любом случае, KB # 821268 содержит очень полезную информацию для настройки параметров резьбы. Однако необходимо еще раз проверить заголовок KB,
Конкуренция, низкая производительность и взаимоблокировки при выполнении запросов веб-служб из приложений ASP.NET
Во многих случаях вам нужна другая статья, потому что чаще многие люди, использующие сайт ASP.NET, не делают запросы к веб-службам ». Другими словами, приведенная выше статья базы знаний может не относиться к вашему ASP.NET, хотя у вас низкая производительность и проблемы с взаимоблокировкой, если ваш сайт не вызывает запросы веб-службы для бэкэнда через HTTP.
Анализ значений по умолчанию для потоков ASP.NET
<Обновлено 27 февраля 2013 г.>
Следующие варианты более подходят для IIS6 в Windows 2003 и ASP.NET v2 до 3.5
Один рабочий поток предназначен для запуска веб-приложения, такого как report.aspx. И значение по умолчанию maxWorkerThreads в.NET Framework, равно 20. Итак, кажется, у вас есть 20 рабочих потоков для запуска приложений ASP.NET, но у вас меньше, чтобы запускать приложения «* .aspx».
Фактическое количество рабочих потоков = maxWorkerThreads (20) — minFreeThreads (8)
Итак, если ваш IIS имеет 1 ЦП, у вас есть 12 рабочих потоков для запуска приложений ASPX. Вот почему #minFreeThreads не может быть выше #maxWorkerThreads. (В этом случае вы увидите ошибку конфигурации.)
Чтобы понять это ясно, требуются другие примеры,
1) IIS имеет 4 процессора и «машину».config »имеет значения по умолчанию (autoConfig -« true »),
maxWorkerThreads, maxIOThreads = 80 (20 × 4)
minFreeThreads = 8
minLocalRequestFreeThreads = 4
maxconnection = 2
<Обновлено 27 февраля 2013 г. >
После применения пакетов обновления и установки новых версий .NET рабочие потоки для запуска любого типа приложений (aspx или asmx) по умолчанию имеют значение «12x # CPU» (autoconfig = ”true”).
Например, если вы имеют 2 процессора, количество рабочих потоков 24.И это касается запросов как «ASPX», так и веб-служб. Стало просто.
Если autoconfig = ’true’, значение maxconnections по умолчанию равно 12x # CPU. Если в IIS 2 процессора, это 24 соединения.
2) На моем сервере 2 процессора и 3 рабочих процесса (w3wp. exe), сколько рабочих потоков?
Каждый рабочий процесс (w3wp.exe) имеет,
maxWorkerThreads, maxIOThreads = 40 (20 × 2)
minFreeThreads = 8
minLocalRequestFreeThreads = 4
maxconnection = 2
<Обновлено 27 февраля 2013 г. >
По умолчанию (autoconfig = ”true”) рабочие потоки для запуска любых типов приложений имеют размер «12x # CPU».
Итак, в этом случае 12 потоков #CPU для каждого процесса.
3) Итак, что будет, если я проведу нагрузочный тест с параметрами потока по умолчанию?
Допущения:
IIS имеет 1 ЦП, 1 W3WP (рабочий процесс IIS), значения по умолчанию (autoConfig = «true»)
Тест нагрузки,
. имеет только 1 ASP.NET (например, report.aspx),
. отправляет 6 запросов / сек,
. В среднем на каждую страницу уходит ровно 4 секунды.
. % Использования ЦП очень низкое.
Вещи будут,
- 1 секунда (после запуска нагрузочного теста): 6 запросов находятся в рабочих потоках.
- 2 секунды: 12 запросов находятся в рабочих потоках.
- 3 секунды: 12 запросов в рабочих потоках, 6 запросов в очереди
- 4 секунды:
6 запросов в рабочих потоках, только что завершенных. 6 запросов в очереди могут поступать в рабочие потоки, а последние 6 запросов ставятся в очередь
Как проверить ASP.NET thread-параметры?
Сначала вам нужно узнать версию .NET framework.
В IIS6 откройте диспетчер IIS, выберите веб-сайт для проверки, откройте окно свойств сайта и перейдите на вкладку [ASP.NET], чтобы проверить его версию.
В IIS7 откройте диспетчер IIS, выберите «Пулы приложений» и выберите пул приложений для проверки, как показано ниже,
Нажмите «Основные настройки»,
Найдя версию, перейдите в папку «C: \ WINDOWS \ Microsoft. Папка NET \ Framework \ v.x.x.xxx \ config, соответствующая вашей версии .NET framework (например, v2.0.50727).
например, C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 \ CONFIG
Откройте файл «machine.config» и найдите элемент
Вышеупомянутое означает, что «значения по умолчанию были скрыты».
Если autoConfig имеет значение false, вы можете установить собственные значения в machine.config.
Как изменить значения по умолчанию
Вам нужно найти
Для вашего сведения, 20 потоков на ЦП — хорошее число для начала, и это немалое количество, если все потоки работают без проблем с блокировкой или задерживаются из-за бэкэнда.
Когда вы редактируете machine.config, вы собираетесь заменить элемент
Вы должны быть очень осторожны, чтобы не нарушить его структуру XML. Рекомендуется сначала создать резервную копию, скопировав файл machine.config в безопасное место.
Примечание. Если вы скопируете приведенное выше и вставите его в файл machine.config, это может привести к ошибке проверки, поскольку указанный выше раздел содержит форматированный текст. И прежде чем вносить какие-либо изменения, создайте копию своего текущего компьютера.config в качестве резервной копии.
Ниже приведен пример, когда вы хотите добавить больше рабочих потоков, а приложения ASP.NET не обращаются к серверной части веб-служб.
net>
Новые параметры потока ASP.NET в IIS7.x (в Windows 2008 и Windows 2008 R2)
Вместо использования параметров в machine.config, параметры applicationPool aspnet.config добавлен недавно, чтобы настроить количество рабочих потоков или ограничить количество одновременных выполняемых запросов. (Начиная с .NET framework 3.5 SP1)
Вы можете добавить следующее в файл aspnet.config в ‘C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727’ или ‘C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319’, в зависимости от используемая версия. Приведенные ниже параметры не существуют по умолчанию.
maxConcurrentRequestsPerCPU = «20»
maxConcurrentThreadsPerCPU = «20»
requestQueueLimit = «5000» />system.Интернет>
maxConcurrentRequestsPerCPU должен установить #Requests для одновременного запуска и также затронуть #worker потоки, параметры по умолчанию не существуют в файле aspnet. config. Это более предпочтительно, поскольку IIS обрабатывает другие ресурсы, а также приложения .NET.
maxConcurrentThreadsPerCPU устанавливает #WorkerThreads для одновременного запуска приложений .NET и имеет прямое влияние на установку размера пула потоков ASP.NET. Вы можете отключить это, установив значение «0», и просто использовать только maxConcurrentRequestsPerCPU.
Вышеуказанные параметры относятся как к ASPX, так и к веб-службам, что означает, что они не похожи на maxWorkerThreads и minFreeThreads. Таким образом, вам больше не нужно настраивать параметры machine.config для настройки параметров minFreeThreads для вызова веб-служб на серверную часть.
Вкратце,
Параметры ASP.NET в файле ASPNET.CONFIG заменяют параметры потока в настройках machine.config в IIS7.x или более поздней версии. (Для IIS6 по-прежнему используется только файл machine.config).
После нанесения.NET Framework3.5 SP1, новые параметры могут применяться .NET Framework v2 с ASP. NET 3.5. Конечно, их можно применить для ASP.NET v4.
Новые параметры по-прежнему не управляют «maxconnection» в файле machine.config. Вам все еще нужно установить параметр maxconnection в machine.config, если требуется, как показано ниже,
<управление подключением>
<добавить адрес = ”*” maxconnections = ”100” />
connectionManagement
Для справки:
Параметры maxConcurrentRequestsPerCPU, maxConcurrentThreadsPerCPU также могут быть настроены в реестре.Я думаю, что использование aspnet.config может быть лучшим выбором, однако я представляю ключи реестра, поэтому вам не нужно путать множество способов сделать то же самое.
Путь к реестру (зависит от версии .NET framework, которую вы используете)
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0 \ или
HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 4.0.30319.0 \
maxConcurrentRequestsPerCPU (DWORD)
maxConcurrentThreadsPerCPU (DWORD)
Нет необходимости устанавливать оба значения, можно просто установить maxConcurrentRequestsPerCPU. maxConcurrentThreadsPerCPU был проигнорирован во время моего теста, когда оба параметра были установлены с разными числами.
Как настроить
Следующий пост будет о «Как настроить», и эта статья не пытается рекомендовать вам изменять как можно больше значений по умолчанию. Это хорошие значения для начала, и они подходят для многих серверов IIS.
Список литературы
Элемент httpRuntime
http://msdn.microsoft.com/en-us/library/e1f13641.aspx
элемент processModel
http://msdn.microsoft.com/en-us/library/7w2sway1
. Производительность и масштабируемость приложений .NET
http://msdn.microsoft.com/library/ff649152
Настройка IIS — настройки machine.config
http://geekswithblogs.net/StuartBrierley/archive/2009/09/30/tuning-iis—machine.config-settings.aspx
Использование потоков ASP.NET в IIS 7.5, IIS 7.0 и IIS 6.0
http://blogs.msdn.com/b/tmarq/archive/2007/07/21/asp-net-thread-usage-on-iis -7-0-и-6-0. aspx
Нравится:
Нравится Загрузка …
Связанные
потоков застряли в java.net.SocketInputStream.socketRead0 — быстрый поток
Что делает API java.net.SocketInputStream.socketRead0 ()? Почему он часто появляется в нескольких дампах потоков? Почему об этом сообщается в инструментах анализа дампа потоков, таких как fastThread.io? Это то, о чем мне нужно беспокоиться? Каковы возможные решения этой проблемы? Давайте найдем ответы на эти вопросы.
Что делает API SocketInputStream.socketRead0 ()?
Всегда легко запомнить новые концепции через аналогии из реальной жизни. Допустим, вы звоните жене или девушке по телефону. Как только звонок будет соединен, если она будет в хорошем / счастливом настроении, вы сразу получите ответ: «Привет, дорогая (или дорогая, или сладкая), как дела?». :-). Если ваш звонок был соединен, когда она была в процессе выполнения какой-либо работы (скажем, она в своем офисе, забирает детей, тренажерный зал…), может быть задержка в ее ответе: «Привет, дорогая (или дорогая, или дорогая)…». ». Предположим, вам позвонили, когда она была в гневе / плохом настроении, тогда ответ может быть непредсказуемым. Только Бог знает. Вы можете получить ответ через несколько секунд / минут (или даже звонок может быть прерван :-). Итак, время, в течение которого вы ждете с момента подключения вызова до момента, когда вы повесили трубку, в основном представляет собой API socketRead0 (). (Спасибо Дугласу Спату из IBM за этот прекрасный пример, объясняющий API SocketRead0 ().)
Ваше приложение может взаимодействовать с несколькими удаленными приложениями через различные протоколы, например: SOAP, REST, HTTP, HTTPS, JDBC, RMI… все соединения проходят через JDK java.сетевой уровень для выполнения более низких операций TCP-IP / Socket. На этом уровне API SocketInputStream.socketRead0 () используется для чтения и получения данных удаленным приложением. Некоторые удаленные приложения могут отвечать немедленно, некоторым может потребоваться время, чтобы ответить, некоторые приложения могут вообще не отвечать. Пока ваше приложение не считывает данные ответа полностью, поток вашего приложения будет зависать в этом API java.net.SocketInputStream.socketRead0 ().
Образец стека дампа потока
Ниже приведен пример трассировки стека, который показывает потоки, застрявшие в SocketInputStream.socketRead0 ’API. Вы можете заметить, что независимо от потоков протокола, они застревают в API SocketInputStream.socketRead0 ().
«RMI TCP Connection (2) -192.xxx.xx.xx» демон prio = 6 tid = 0x000000000a3e8800 nid = 0x158e50 runnable [0x000000000adbe000] java.lang.Thread.State: RUNNABLE в java.net.SocketInputStream.socketRead0 (собственный метод) в java.net.SocketInputStream.read (неизвестный источник) в java.net.SocketInputStream.read (неизвестный источник) в java.io.BufferedInputStream.fill (неизвестный источник) в java.io.BufferedInputStream.read (неизвестный источник) - заблокирован (0x00000007ad784010) (java.io.BufferedInputStream) в java.io.FilterInputStream.read (неизвестный источник) в sun. rmi.transport.tcp.TCPTransport.handleMessages (неизвестный источник) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0 (Неизвестный источник) в sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run (Неизвестный источник) в java.util.concurrent.ThreadPoolExecutor.runWorker (Неизвестный источник) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) в java.lang.Thread.run (Неизвестный источник)
Рис. Поток RMI застрял в SocketInputStream.socketRead0 () API
"Thread-18" id = 48 idx = 0x9c tid = 11696 prio = 5 вживую, на родном языке, демон в jrockit / net / SocketNativeIO.readBytesPinned (Ljava / io / FileDescriptor; [BIII) I (собственный метод) в jrockit / net / SocketNativeIO.socketRead (SocketNativeIO.java:32) в java / net / SocketInputStream.socketRead0 (Ljava / io / FileDescriptor; [BIII) I (SocketInputStream.java) в java / net / SocketInputStream.read (SocketInputStream.java:129) в java / net / ManagedSocketInputStreamHighPerformanceNew. читать (ManagedSocketInputStreamHighPerformanceNew.java:100) в java / net / SocketInputStream.read (SocketInputStream.java:182) в java / net / ManagedSocketInputStreamHighPerformanceNew.read (ManagedSocketInputStreamHighPerformanceNew.java:55) в oracle / ons / InputBuffer.getNextString (InputBuffer.java:137) в oracle / ons / ReceiverThread.run (ReceiverThread.java:295) в jrockit / vm / RNI.c2java (JJJJJ) V (собственный метод)
Рис. Соединение с Oracle Database застряло в SocketInputStream.socketRead0 () API
"Соединение AMQP 192.xx.xxx.xxx:5672 "prio = 5 ВЫПОЛНЯЕТСЯ java.net.SocketInputStream.socketRead0 (собственный метод) java.net.SocketInputStream.socketRead (SocketInputStream.java:116) java.net.SocketInputStream.read (SocketInputStream.java:170) java.net.SocketInputStream.read (SocketInputStream.java:141) java.io.BufferedInputStream.fill (BufferedInputStream.java:246) java.io.BufferedInputStream.read (BufferedInputStream.java:265) java.io.DataInputStream.readUnsignedByte (DataInputStream. java:288) com.rabbitmq.client.impl.Frame.readFrom (Frame.java: 95) com.rabbitmq.client.impl.SocketFrameHandler.readFrame (SocketFrameHandler.java:139) com.rabbitmq.client.impl.AMQConnection $ MainLoop.run (AMQConnection.java:536) java.lang.Thread.run (Thread.java:745)
Рис. RabbitMQ застрял в SocketInputStream.socketRead0 () API
"Thread-2012" id = 218 idx = 0x09c tid = 196 prio = 10 live, in native, daemon java.lang.Thread.State: RUNNABLE в java.net.SocketInputStream.socketRead0 (собственный метод) в java.net.SocketInputStream.read (SocketInputStream.java: 140) в com.ibm.db2.jcc.t4.z.b (z.java:199) в com.ibm.db2.jcc.t4.z.c (z.java:289) в com.ibm.db2.jcc.t4.z.c (z.java:402) в com.ibm.db2.jcc.t4.z.v (z.java:1170) в com.ibm.db2.jcc.t4.cb.b (cb.java:40) в com.ibm.db2.jcc.t4.q.a (q.java:32) в com.ibm.db2.jcc.t4.sb.i (sb.java:135) в com.ibm.db2.jcc.am.yn.gb (yn.java:2066) в com.ibm.db2.jcc.am.zn.pc (zn.java:3446) в com.ibm.db2.jcc.am.zn.b (zn.java:4236) в com.ibm.db2.jcc.am.zn.fc (zn.java:2670) в com.ibm.db2.jcc.am.zn.execute (zn.java:2654) на com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.execute (WSJdbcPreparedStatement.java:618) в com.mycompany.myapp.MyClass.executeDatabaseQuery (MyClass.java:123)
Рис. Выполнение оператора IBM DB2 застряло в SocketInputStream.socketRead0 () API
Решения
Если поток застревает в API SocketInputStream.socketRead0 и не восстанавливается после этого в течение более длительного периода, то клиент, который инициировал транзакцию, не увидит никакого ответа на своем экране. Это может озадачить, сбить с толку пользователя.Если несколько потоков застревают в SocketInputStream.socketRead0 API и не восстанавливаются в течение длительного периода, это может создать серьезные проблемы с доступностью для вашего приложения.
Здесь мы обрисовываем несколько потенциальных решений для решения этой проблемы:
1. Настройки тайм-аута прибора
1.1. Настройки сети JVM
1,2. setSoTimeout
1,3. JDBC
1,4. Oracle JDBC
1,5. Вебсфера
1.6. Axis2
2. Проверка подключения к сети
3. Работа с удаленным приложением
4. Неблокирующий HTTP-клиент
# 1. Настройки тайм-аута прибора
Большинство приложений не устанавливают соответствующие настройки тайм-аута для восстановления из SocketInputStream.socketRead0, поэтому они застревают в этом API на длительный период. Установка соответствующего тайм-аута — отличный механизм самозащиты, который должно выполнять каждое приложение. Вот несколько настроек тайм-аута, которые вы можете применить к своему приложению по своему усмотрению:
1.1. Сетевые настройки JVM
Вы можете передать эти два мощных сетевых свойства тайм-аута, которые могут быть глобально применимы ко всем обработчикам протоколов, использующим java.net.URLConnection:
- -Dsun.net.client.defaultConnectTimeout
- -Dsun.net.client.defaultReadTimeout
sun.net.client.defaultConnectTimeout указывает время ожидания (в миллисекундах) для установления соединения с хостом. Например, для HTTP-соединений это тайм-аут при установке соединения с HTTP-сервером.Для ftp-соединения это тайм-аут при установлении соединения с ftp-серверами.
sun.net.client.defaultReadTimeout указывает тайм-аут (в миллисекундах) при чтении из входного потока, когда устанавливается соединение с ресурсом.
Более подробную информацию о сетевых настройках JVM можно найти здесь.
1.2. setSoTimeout
Если вы напрямую программируете с помощью Sockets, вы можете рассмотреть возможность установки тайм-аута для сокета, вызвав API setSoTimeout ().
В этот API вы можете передать значение тайм-аута в миллисекундах. Если удаленное приложение не отвечает в течение указанного периода ожидания, будет сгенерировано исключение java.net.SocketTimeoutException. Это исключение освободит поток, позволяя ему работать с другими вызовами. Примечание. Если значение тайм-аута передается как 0, это интерпретируется как бесконечное время ожидания, это означает, что поток никогда не будет тайм-аут.
1,3. JDBC
Если вы используете JDBC (Java DataBase Connectivity) для подключения, вы можете рассмотреть возможность установки значения тайм-аута с помощью API setQueryTimeout ().
Этот API устанавливает количество секунд, в течение которых драйвер JDBC будет ожидать получения результатов из базы данных. Если предел превышен, создается исключение SQLTimeoutException. Драйвер JDBC применяет это ограничение к методам execute, executeQuery () и executeUpdate (). По умолчанию нет ограничений на время, отведенное для выполнения выполняющейся инструкции.
1,4. Oracle JDBC
Если вы подключаетесь к базе данных Oracle и видите, что на SocketInputStream застревает много потоков.socketRead0 (), вы можете передать системное свойство -D oracle.jdbc.ReadTimeout .
При запуске приложения необходимо передать указанный выше аргумент. Значение необходимо указать в миллисекундах.
1,5. Websphere
Если ваше приложение выполняется в IBM Websphere, вы можете рассмотреть возможность установки следующих свойств:
а. Администратор может установить настраиваемое свойство источника данных webSphereDefaultQueryTimeout .
г.Второе свойство, syncQueryTimeoutWithTransactionTimeout , также может быть установлено как настраиваемое свойство источника данных. С этим набором WebSphere рассчитает время, оставшееся до истечения времени ожидания транзакции (если выполняется в рамках глобальной транзакции), и автоматически установит это значение для тайм-аута запроса.
1,6. Axis2
Вы также можете установить свойство «readTimeout» в наборе транспортной политики HTTP для клиента веб-службы или установить «тайм-аут» в org.apache.axis2.context.MessageContext в коде приложения.
# 2. Проверить сетевое подключение
Потоки, не восстанавливающиеся из API SocketInputStream.socketRead0, также могут возникать из-за проблем с сетевым подключением или балансировщиками нагрузки. Мы видели в прошлом, что иногда удаленное приложение может не выдавать соответствующие пакеты ACK или FIN. Возможно, вам придется привлечь сетевых инженеров или группу поддержки поставщиков облачного хостинга для устранения проблемы.
Со своей стороны, вы можете использовать инструменты отслеживания TCP / IP, такие как Wireshark, для просмотра пакетов, отправляемых в сети между вами и удаленным приложением.Это может помочь вам сузить круг вопросов, на вашей стороне сети или на другой ее стороне.
# 3. Работа с удаленным приложением
Иногда вполне возможно, что транзакции замедляются из-за проблем с производительностью в удаленном приложении. В таких обстоятельствах вам необходимо сообщить удаленному приложению о замедлении и поработать с ними, чтобы устранить проблему.
# 4. Неблокирующий HTTP-клиент
Вы также можете рассмотреть возможность использования неблокирующих клиентских библиотек HTTP, таких как Grizzly или Netty, которые не имеют блокирующих операций для зависания потока.Но это решение является скорее стратегическим, которое включает в себя изменения кода и тщательное тестирование.
Обратите внимание, это исчерпывающий список, но, возможно, не полный список возможных решений. Если у вас есть дополнительные решения и настройки тайм-аута, которые вы хотели бы добавить в этот блог, напишите нам в разделе отзывов ниже. Мы будем рады обновить этот блог вашими рекомендациями.
Как это:
Нравится Загрузка …
std :: thread — cppreference.com
класс резьба; | (начиная с C ++ 11) | |
Поток класса
представляет собой один поток выполнения. Потоки позволяют выполнять несколько функций одновременно.
Потоки начинают выполнение сразу после создания связанного объекта потока (в ожидании любых задержек планирования ОС), начиная с функции верхнего уровня, предоставленной в качестве аргумента конструктора.Возвращаемое значение функции верхнего уровня игнорируется, и если она завершается выдачей исключения, вызывается std :: terminate. Функция верхнего уровня может передать свое возвращаемое значение или исключение вызывающему через std :: prom или путем изменения общих переменных (что может потребовать синхронизации, см. Std :: mutex и std :: atomic)
std :: thread
объекты также могут находиться в состоянии, которое не представляет какой-либо поток (после построения по умолчанию, перемещение из, отсоединение или присоединение), и поток выполнения может не быть связан с какими-либо объектами потока
(после отсоединения).
Никакие два объекта std :: thread
не могут представлять один и тот же поток выполнения; std :: thread
не является CopyConstructible или CopyAssignable, хотя это MoveConstructible и MoveAssignable.
[править] Типы членов
Тип элемента | Определение |
native_handle_type (необязательно) | определяется реализацией |
[править] Классы элементов
представляет id потока (открытый класс члена) [править] |
[править] Функции-члены
создает новый объект потока (общедоступная функция-член) [править] | |
разрушает объект потока, базовый поток должен быть присоединен или отсоединен. (общедоступная функция-член) [править] | |
перемещает объект потока (общедоступная функция-член) [править] | |
Наблюдатели | |
проверяет, можно ли присоединиться к потоку, т.е.е. потенциально работающий в параллельном контексте (общедоступная функция-член) [править] | |
возвращает идентификатор потока (общедоступная функция-член) [править] | |
возвращает базовый дескриптор потока, определяемый реализацией (общедоступная функция-член) [править] | |
возвращает количество параллельных потоков, поддерживаемых реализацией (общедоступная статическая функция-член) [править] | |
Операции | |
ожидает завершения выполнения потока. (общедоступная функция-член) [править] | |
позволяет потоку выполняться независимо от дескриптора потока (общедоступная функция-член) [править] | |
меняет местами два объекта потока (общедоступная функция-член) [править] |
[править] Функции, не являющиеся членами
Продукция, сертифицированная по резьбеДоступны следующие сертифицированные продукты и компоненты для группы потоков. Точка доступа Google Nest WifiКаждая точка работает с маршрутизатором Google Nest Wifi, чтобы расширить зону покрытия и обеспечить высокую скорость Wi-Fi в каждой комнате. Кроме того, это умный динамик с Google Assistant, на котором вы можете слушать музыку, находить ответы и многое другое. Ссылка на продукт Google Nest Wi-Fi роутерGoogle Nest Wifi надежно покрывает весь ваш дом. Он работает незаметно, чтобы ваш Wi-Fi был быстрым и не буферизовался.Он автоматически обновляется, чтобы получить новые функции и помочь вашей сети оставаться в безопасности. Ссылка на продукт Google Nest Hub MaxGoogle Nest Hub Max — это умный дисплей с Google Assistant от Google Nest, 10-дюймовый HD-экран, встроенная камера Nest Cam и стереодинамики. С помощью панели мониторинга и голосовых команд вы можете управлять тысячами устройств умного дома, такими как освещение, телевизоры, замки и многое другое. Ссылка на продукт Полевой приемник Farm JennyИспользуемый как часть решения Farm Jenny for Horses, полевой приемник обеспечивает ячеистую сеть всей фермы; покрывая каждое пастбище, участок и сарай.Этот маршрутизатор Thread также доступен как отдельный элемент для производителей оригинального оборудования (OEM), которым требуется прочное устройство на солнечной энергии, подходящее для самых суровых климатических условий. Ссылка на продукт net4more borderROUTER PoE-потокTridonic net4more borderROUTER PoE-Thread — это универсальный пограничный маршрутизатор потоков, который можно использовать из коробки для любого приложения на основе потоков. Как неотъемлемая часть системы net4more — основа Tridonic для решений IoT (https: // www.youtube.com/watch?v=mGnlqIdEy9o), это позволяет клиентам подключить беспроводные устройства, такие как светильники и датчики на остове здания, которое уменьшает сложность, тем самым нарушая элеваторов в здании. Ссылка на продукт net4more com МОДУЛЬ UN: c-ThreadБеспроводной КОММОДУЛЬ для системы net4more. Ссылка на продукт net4more com МОДУЛЬ Резьба DALI Tridonic net4more comMODULE Thread DALI позволяет клиентам подключать компоненты освещения на основе DALI2 к системе net4more — магистральной сети Tridonic для решений IoT WideSky HubWideSky Hub обеспечивает простой и экономичный доступ к вашим данным за счет создания беспроводной ячеистой сети большого радиуса действия, которая устраняет необходимость в проводных кабелях.Легко подключайте устаревшие не-IP-устройства к потоковой сети с помощью встроенной последовательной связи и ввода-вывода. Благодаря таким функциям, как регистрация данных, контроль в реальном времени и обновления OTA, он дает вам надежность для создания более эффективных решений в области управления энергопотреблением, интеллектуальных зданий и промышленных решений. В сочетании с WideSky Cloud вы также можете легко создавать масштабируемые и безопасные решения IoT. Ссылка на продукт Каскода Чили2DМодуль Chili2D — это полностью интегрированный модуль USB-ключа для разработки Thread / IEEE 802.15.4 приложения. Он может работать как USB-ключ или как автономный модуль малой мощности. Он сочетает в себе микроконтроллер ARM Cortex-M23 TrustZone с модемом приемопередатчика Cascoda CA-8211 2,4 ГГц IEEE 802.15.4. CA-8211 — это сопроцессор / модем радиосвязи IEEE 802.15.4 со встроенным MAC и исключительной чувствительностью приема -105 дБм. Микроконтроллер ARM Cortex-M23 обладает передовыми функциями безопасности, такими как TrustZone, и отличным низким энергопотреблением. Chili2D включает в себя USB и схему питания, но имеет аналогичный модуль Chili2S, который представляет собой одностороннюю печатную плату, предназначенную для использования в качестве модуля, интегрированного в более крупную систему. Chili2D сертифицирован с помощью Cascoda SDK, гибкого SDK для разработки широкого спектра решений, включая использование Chili2D в качестве сенсорного модуля с батарейным питанием, сетевого сопроцессора в более крупной системе, маршрутизатора полного потока или любого другого потока роль. Он включает поддержку систем без оболочки или ОСРВ. Его можно использовать с минимальной функциональностью IP или с полным стеком IP, включая такие инструменты, как TLS и DNS. Существуют вспомогательные библиотеки для полезного кодирования данных, такие как CBOR или gzip, и множество примеров приложений для начальной загрузки разработчиков.Интеграция с прикладным уровнем OCF также включена в SDK. Ссылка на продукт Cascoda Limited (CA-8211)CA-8211 — это модем с приемопередатчиком IEEE802.15.4 дальнего действия с исключительной чувствительностью приемника -105 дБм, обеспечивающий глобальное развертывание с низким энергопотреблением. CA-8211 имеет мощный интегрированный MAC, оптимизированный для потоков с гибким интерфейсом. CA-8211 в сочетании с OpenThread предоставляет надежный и легко настраиваемый компонент Thread Certified для каждой роли.Ссылка на продукт Kirale Technologies — Стек потоков KiNOSСетевая операционная система реального времени Kirale — это высокопроизводительный, безопасный, надежный и масштабируемый стек с сертификацией потоков, предназначенный для беспроводных маломощных встроенных устройств с поддержкой IP и подходящий для всех ролей потоков от конечных устройств со сверхнизким энергопотреблением до мощных пограничных устройств Маршрутизаторы. KiNOS полностью разработан Kirale Technologies и создан с нуля для оптимизации занимаемой площади и производительности. Небольшой размер, простой и удобный в использовании, с очень переносимой структурой исходного кода, которая упрощает настройку Product Link Kirale Technologies — Радиочастотный модуль KTWM102Полное сертифицированное решение для резьбовых соединений с наименьшей в мире площадью на печатной плате.Компонент для поверхностного монтажа, включающий SoC, который сочетает в себе мощный и сверхэффективный 32-разрядный микроконтроллер на базе ARM® Cortex®-M0 + и лучший в своем классе радиочастотный приемопередатчик 2,4 ГГц, соответствующий стандарту IEEE 802.15.4. Он может легко обрабатываться хост-процессорами через интерфейсы USB и UART, и он сертифицирован FCC / IC / CE, что позволяет сократить время вывода на рынок и снизить затраты на разработку. Ссылка на продукт Nordic Semiconductor nRF52833 + OpenThread (nRF5 SDK для Thread и Zigbee 4.1)nRF52833 — это многопротокольная SoC общего назначения, пригодная для работы в расширенном диапазоне температур.В дополнение к использованию зрелости испытанной и испытанной серии nRF52, nRF52833 подходит для работы при температуре окружающей среды 105 ° C, а достаточно доступной памяти позволяет одновременную работу нескольких протоколов в частотном диапазоне 2,4 ГГц, например Bluetooth Low Energy в в сочетании с Bluetooth Mesh, Thread или Zigbee. nRF5 SDK для Thread и Zigbee — это полное решение для создания продуктов, сертифицированных для Thread 1.1 и Zigbee 3.0. Он включает стек OpenThread для Thread и стек ZBOSS для Zigbee.nRF5 SDK для Thread и Zigbee в полной мере использует многопротокольные возможности SoC nRF52833 и nRF52840, поддерживая одновременную работу Thread / Zigbee 3.0 и Bluetooth ® с низким энергопотреблением. SDK предоставляет исходный код стека OpenThread для полной гибкости во время разработки и три варианта предварительно скомпонованных, предварительно сертифицированных двоичных файлов стека, чтобы обеспечить прямую сертификацию по наследству при обеспечении оптимального использования ресурсов: Главный образ — поддерживает все роли потоков и содержит все функции OpenThread. Nordic Semiconductor nRF52840 + OpenThread (nRF5 SDK для Thread и Zigbee 4.1)SoC nRF52840 — самый продвинутый член семейства SoC серии nRF52.Он отвечает требованиям сложных приложений, которым требуется параллелизм протоколов, а также богатый и разнообразный набор периферийных устройств и функций. NRF52840 полностью поддерживает протоколы с полным параллелизмом. Он поддерживает протоколы Bluetooth 5, Bluetooth mesh, Thread, Zigbee, 802.15.4, ANT и собственные стеки 2,4 ГГц. nRF5 SDK для Thread и Zigbee — это полное решение для создания продуктов, сертифицированных для Thread 1.1 и Zigbee 3.0. Он включает стек OpenThread для Thread и стек ZBOSS для Zigbee.nRF5 SDK для Thread и Zigbee в полной мере использует многопротокольные возможности SoC nRF52833 и nRF52840, поддерживая одновременную работу Thread / Zigbee 3.0 и Bluetooth ® с низким энергопотреблением. SDK предоставляет исходный код стека OpenThread для полной гибкости во время разработки и три варианта предварительно скомпонованных, предварительно сертифицированных двоичных файлов стека, чтобы обеспечить прямую сертификацию по наследству при обеспечении оптимального использования ресурсов: Главный образ — поддерживает все роли потоков и содержит все функции OpenThread Nordic Semiconductor nRF52840 + OpenThread (nRF5 SDK для Thread и Zigbee 3.2)SoC nRF52840 — самый продвинутый член семейства SoC серии nRF52. Он отвечает требованиям сложных приложений, которым требуется параллелизм протоколов, а также богатый и разнообразный набор периферийных устройств и функций. NRF52840 полностью поддерживает протоколы с полным параллелизмом. Он поддерживает протоколы Bluetooth 5, Bluetooth mesh, Thread, Zigbee, 802.Собственные стеки для частот 15,4, ANT и 2,4 ГГц. nRF5 SDK для Thread и Zigbee — это полное решение для создания продуктов, сертифицированных для Thread 1.1 и Zigbee 3.0. Он включает стек OpenThread для Thread и стек ZBOSS для Zigbee. nRF5 SDK для Thread и Zigbee в полной мере использует многопротокольные возможности SoC nRF52833 и nRF52840, поддерживая одновременную работу Thread / Zigbee 3.0 и Bluetooth ® с низким энергопотреблением. SDK предоставляет исходный код стека OpenThread для полной гибкости во время разработки и предварительно созданный, предварительно сертифицированный двоичный файл стека, чтобы обеспечить прямую сертификацию по наследованию.Ссылка на продукт NXP K32W061 / 41 OpenThreadK32W061 / 41 — это линейка высокопроизводительных многопротокольных беспроводных микроконтроллеров со сверхнизким энергопотреблением, поддерживающих протоколы Thread, Zigbee и Bluetooth LE, для поддержки следующего поколения приложений беспроводного Интернета вещей. Оснащенный микроконтроллером Arm® Cortex®-M4 с объемом встроенной флэш-памяти до 640 КБ и SRAM объемом 152 КБ, K32W061 / 41 обеспечивает достаточно места и гибкости для сложных приложений, стеков связи и возможности обновления OTA.Эти беспроводные MCU также имеют богатый набор аналоговых и цифровых периферийных устройств, а также несколько интерфейсов последовательной связи для встроенных подключенных приложений. Благодаря сверхнизкому потреблению тока как в режимах приема, так и передачи радио, можно использовать небольшие батарейки типа «таблетка», которые соответствуют требованиям к сроку службы. Существует также возможность интегрированного NFC NTAG для реализации бесконтактного ввода в эксплуатацию NFC, упрощающего создание сети. Портфель K32W061 / 41 аппаратно и по контактам совместим с JN5189 / 88, обеспечивая легкий путь к добавлению Bluetooth LE.Ссылка на продукт NXP JN5189 / 88 OpenThreadJN5189 / 88 — это линейка высокопроизводительных беспроводных микроконтроллеров со сверхнизким энергопотреблением, поддерживающая протоколы Thread и Zigbee для поддержки следующего поколения приложений беспроводного Интернета вещей. Оснащенный микроконтроллером Arm® Cortex®-M4 со встроенной флэш-памятью объемом до 640 КБ и SRAM объемом 152 КБ, JN5188 / 89 обеспечивает достаточно места и гибкости для сложных приложений, стеков связи и возможности обновления OTA. Эти беспроводные MCU также имеют богатый набор аналоговых и цифровых периферийных устройств, а также несколько интерфейсов последовательной связи для встроенных подключенных приложений.Благодаря сверхнизкому потреблению тока как в режимах приема, так и передачи радио, можно использовать небольшие батарейки типа «таблетка», которые соответствуют требованиям к сроку службы. Существует также возможность интегрированного NFC NTAG для реализации бесконтактного ввода в эксплуатацию NFC, упрощающего создание сети. Ссылка на продукт Набор ниток NXP Kinetis (KW2xD)NXP Kinetis Thread Stack — это полный, надежный и масштабируемый сертифицированный стек, спроектированный и протестированный для удовлетворения самых высоких требований к продуктам, включая конечные узлы с очень низким энергопотреблением, большие потоковые сети и шлюзовые решения.Стек доступен на нескольких микроконтроллерах NXP и легко подключается к хост-процессорам для создания решений Thread Border Router. Ссылка на продукт Набор ниток NXP Kinetis (KW41Z / 21Z)NXP Kinetis Thread Stack — это полный, надежный и масштабируемый сертифицированный стек, спроектированный и протестированный для удовлетворения самых высоких требований к продуктам, включая конечные узлы с очень низким энергопотреблением, большие потоковые сети и шлюзовые решения. Стек доступен на нескольких микроконтроллерах NXP и легко подключается к хост-процессорам для создания решений Thread Border Router.Ссылка на продукт OpenThread (ТИ CC2538)OpenThread, выпущенный Nest и поддерживаемый Google, представляет собой реализацию сетевого протокола Thread с открытым исходным кодом. Это очень портативная библиотека, не зависящая от ОС и платформы, с уровнем радиоабстракции, который поддерживается на нескольких платформах. Ссылка на продукт Граничный маршрутизатор OpenThreadOpenThread Border Router (OTBR) — это реализация пограничного маршрутизатора потока с открытым исходным кодом.OTBR обеспечивает поддержку физических платформ и виртуальных контейнеров, таких как Docker, а также запуск внешних потоков через мобильное приложение. OTBR также включает в себя такие функции, как веб-интерфейс для настройки и управления сетью, драйвер интерфейса wpantund Thread и NAT64 и DNS64 для подключения по IPv4. Ссылка на продукт Qorvo GP712 Система на кристаллеQorvo GP712 System-on-Chip — это мультистековый многоканальный коммуникационный контроллер IEEE 802.15.4 для интеграции в узлы Zigbee или Thread (OpenThread).Он соответствует стандарту IEEE 802.15.4, обеспечивая надежную передачу данных с расширенным спектром с безопасным зашифрованным потоком данных и поддерживает несколько стеков протоколов ZigBee 3.0 и Thread в главном процессоре. Ссылка на продукт QPG6095ZigBee / Thread / Коммуникационный контроллер умного дома BLE. Ссылка на продукт Qualcomm Atheros, Inc. (QCA 4020/4024/4025)802.15.4 / Процессор приложений Wi-Fi / BLE со стеком потоков / Product Link Exynos i T100 Модульная плата SIDKSamsung Exynos i T100 — это решение для подключения к Интернету вещей на короткие расстояния за счет поддержки основных протоколов, включая Bluetooth 5 Low Energy, Zigbee 3.0 и Thread. Exynos i T100, построенный по 28-нм техпроцессу, также обеспечивает лучшую в своем классе производительность и надежную безопасность благодаря встроенному процессору с памятью и расширенным функциям безопасности соответственно. Стек SamT Thread Stack, основанный на стеке OpenThread, расширяет возможности подключения T100. Ссылка на продукт Silicon Labs Mighty Gecko SoC (EFR32MG13x)SoC EFR32MG13 идеально подходят для разработки энергосберегающих устройств Zigbee и Thread IoT с питанием от батарей. Устройства EFR32MG13 также включают поддержку проприетарного протокола Bluetooth с низким энергопотреблением и частотой менее ГГц.Энергоэффективное решение с одним кристаллом обеспечивает сверхбыстрое время пробуждения, масштабируемый усилитель мощности и микроконтроллер (MCU) ARM® Cortex®-M4 с частотой 40 МГц с 512 флэш-памятью, 64 RAM и богатым набором периферийных устройств. Надежная и устойчивая связь поддерживается программируемым усилителем мощности, который может обеспечивать выходную мощность до +19 дБм, и приемником с чувствительностью -102,7 дБм. EFR32MG13, созданный на основе технологии Gecko с низким энергопотреблением, которая включает инновационные технологии низкого потребления энергии, быстрое время пробуждения и режимы энергосбережения, снижает общее энергопотребление и увеличивает срок службы батареи.Ссылка на продукт Silicon Labs Mighty Gecko SoC (EFR32MG21X) + OpenThreadУстройство EFR32MG21 Series 2 — это беспроводная SoC с частотой 2,4 ГГц, оптимизированная для сетевых приложений Zigbee, Thread и Bluetooth с питанием от сети, включая подключенное освещение, шлюзы, голосовые помощники и интеллектуальные измерения. Ядро ARM ® Cortex ® -M33 с тактовой частотой 80 МГц обеспечивает широкие возможности обработки, а выделенное ядро безопасности обеспечивает более быстрое шифрование, безопасную загрузку и контроль доступа для отладки.Обладая чувствительностью выше -104 для 802.15.4 и Bluetooth Long Range и выходной мощностью до +20 дБм, EFR32MG21 обеспечивает надежную радиочастотную связь для обеспечения надежной связи. Ссылка на продукт Silicon Labs Модуль Mighty Gecko MGM12PМодуль Mighty Gecko MGM12P от компании Silicon Labs объединяет нашу SoC EFR32MG12 в модуль малого форм-фактора, поддерживающий протоколы Thread, Zigbee и Bluetooth. Благодаря 1024 КБ флэш-памяти и 256 КБ ОЗУ этот модуль идеально подходит для приложений, требующих поддержки нескольких протоколов.MGM12P объединяет все необходимые системные компоненты, включая кристаллы, радиочастотные пассивные элементы и антенну, а также соответствует международным нормативным требованиям, включая сертификаты FCC / IC / CE. Ссылка на продукт Silicon Labs Mighty Gecko SoC (EFR32MG1x)Mighty Gecko SoC — это высокоинтегрированная беспроводная SoC с ядром ARM ® Cortex ® -M4 и многопротокольным, многополосным радиомодулем, поддерживающим IEEE 802.15.4 (Thread / zigbee), Bluetooth с низким энергопотреблением и собственные протоколы RF.Это семейство поддерживает до 1 МБ флэш-памяти и 256 КБ ОЗУ. Дополнительные функции включают PA +20 дБм и уникальный интерфейс трассировки пакетов (PTI) от Silicon Labs. Ссылка на продукт Стек ниток Silicon Labs (EM35x)Стек потоков Silicon Labs представляет собой надежную реализацию протоколов Thread 1.1, подходящую для развертывания в полевых условиях и сертифицированную на платформе EM35x. Ссылка на продукт Silicon Labs Mighty Gecko SoC (EFR32MG12X) + OpenThreadMighty Gecko SoC — это высокоинтегрированная беспроводная SoC с ядром ARM ® Cortex ® -M4 и многопротокольным, многополосным радио, поддерживающим IEEE 802.15.4 (Thread / zigbee), Bluetooth с низким энергопотреблением и собственные протоколы RF. Это семейство поддерживает до 1 МБ флэш-памяти и 256 КБ ОЗУ. Дополнительные функции включают PA +20 дБм и уникальный интерфейс отслеживания пакетов (PTI) от Silicon Labs. Ссылка на продукт STM32WB (устройство с полной резьбой) STMicroelectronics STM32WB55 Беспроводной микроконтроллер представляет собой двухъядерный, многопротокольный микроконтроллер 2,4 ГГц на кристалле (SoC). Серия STM32WB5x поддерживает протоколы связи Bluetooth 5, а также IEEE 802.15.4 (в одиночном и параллельном режимах).Основанный на микроконтроллере STM32L4 со сверхнизким энергопотреблением, STM32WB предназначен для сокращения времени и затрат на разработку, увеличения срока службы батареи приложений и стимулирования инноваций благодаря богатому и гибкому набору периферийных устройств. Двухъядерная архитектура STM32WB позволяет в реальном времени выполнять как код приложения, так и задачи сетевой обработки. В результате разработчики могут обеспечить отличное взаимодействие с конечным пользователем, а также воспользоваться преимуществами гибкости для оптимизации системных ресурсов. Контроллер сетевой обработки Arm Cortex -M0 + содержит стеки протоколов, доступные в нашем пакете STM32CubeWB FW.Современные встроенные функции защиты предназначены для защиты данных пользователей и помогают защитить интеллектуальную собственность в интеллектуальных подключенных устройствах. Разработчики также могут создавать продукты, соответствующие требованиям завтрашнего дня, с аутентификацией по беспроводной сети (OTA) и обновлениями по радио. STM32WB (Устройство с минимальной резьбой) STMicroelectronics STM32WB55 Беспроводной микроконтроллер представляет собой двухъядерный, многопротокольный микроконтроллер 2,4 ГГц на кристалле (SoC). Серия STM32WB5x поддерживает Bluetooth 5, а также IEEE 802.15.4 протоколы связи (в режиме Single и Concurrent). Основанный на микроконтроллере STM32L4 со сверхнизким энергопотреблением, STM32WB предназначен для сокращения времени и затрат на разработку, увеличения срока службы батареи приложений и стимулирования инноваций благодаря богатому и гибкому набору периферийных устройств. Двухъядерная архитектура STM32WB позволяет в реальном времени выполнять как код приложения, так и задачи сетевой обработки. В результате разработчики могут обеспечить отличное взаимодействие с конечным пользователем, а также воспользоваться преимуществами гибкости для оптимизации системных ресурсов.Контроллер сетевой обработки Arm Cortex -M0 + содержит стеки протоколов, доступные в нашем пакете STM32CubeWB FW. Современные встроенные функции защиты предназначены для защиты данных пользователей и помогают защитить интеллектуальную собственность в интеллектуальных подключенных устройствах. Разработчики также могут создавать продукты, соответствующие требованиям завтрашнего дня, с аутентификацией по беспроводной сети (OTA) и обновлениями по радио. TI OpenThread (CC2652)TI OpenThread — это реализация потока от TI, использующая стек OpenThread с открытым исходным кодом в качестве сетевого ядра.Он интегрирован в среду микроконтроллера TI SimpleLink ™, программную среду, включая поддержку ОСРВ, драйверов, безопасной загрузки и инструментов, общих для всех встраиваемых устройств TI. TI OpenThread работает на беспроводном MCU SimpleLink CC2652R, многопротокольном беспроводном MCU с низким энергопотреблением 2,4 ГГц (BLE, Zigbee, Thread, проприетарный 2,4 ГГц). Это устройство можно использовать для создания всех приложений поверх любого типа устройства Thread. |