std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 08:11
Оценка: :)
О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?
Re: std::thread без оси
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.08.25 08:42
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?


Нет конечно. Как ты себе это представляешь?
Маньяк Робокряк колесит по городу
Re[2]: std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 08:43
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, Hоmunculus, Вы писали:


H>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?


M>Нет конечно.


Это ответ на первый или на второй вопрос?
Re[3]: std::thread без оси
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.08.25 08:46
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?


M>>Нет конечно.


H>Это ответ на первый или на второй вопрос?



После первого вопроса второй я даже не читал
Маньяк Робокряк колесит по городу
Re[4]: std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 08:47
Оценка:
Здравствуйте, Marty, Вы писали:

M>После первого вопроса второй я даже не читал


Я так себе представляю, что разрабы стандратной библиотеки для конкретной архитектуры уже знают хардварные тонкости и все это предусмотрели.
Re: std::thread без оси
От: ononim  
Дата: 28.08.25 09:10
Оценка: +1
H>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?
А что такое хардварный поток?
Как много веселых ребят, и все делают велосипед...
Re[2]: std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 09:11
Оценка: :))) :)
Здравствуйте, ononim, Вы писали:

H>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?

O>А что такое хардварный поток?

Который физически распараллелен, а не перещелкиванием контекста
Re[3]: std::thread без оси
От: ononim  
Дата: 28.08.25 09:14
Оценка:
H>>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?
O>>А что такое хардварный поток?
H>Который физически распараллелен, а не перещелкиванием контекста
Во всех современных осях потоки сделаны перещелкиванием контекста. Физических ядер на все потоки не хватит.
Как много веселых ребят, и все делают велосипед...
Re[4]: std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 09:14
Оценка:
Здравствуйте, ononim, Вы писали:

H>>>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?

O>>>А что такое хардварный поток?
H>>Который физически распараллелен, а не перещелкиванием контекста
O>Во всех современных осях потоки сделаны перещелкиванием контекста. Физических ядер на все потоки не хватит.

Ну по ядрам кто это распределяет? Ось? А без нее?
Re[5]: std::thread без оси
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.08.25 09:16
Оценка: 6 (1)
Здравствуйте, Hоmunculus, Вы писали:

M>>После первого вопроса второй я даже не читал


H>Я так себе представляю, что разрабы стандратной библиотеки для конкретной архитектуры уже знают хардварные тонкости и все это предусмотрели.


Нет конечно. Микроконтроллеров тысячи разных, каждый со своими приколами. Даже если это ARM на Cortex-M, не уверен, что это реально. Ведь по сути в библиотеке должен быть планировщик-шедулер, который бы их переключал, все примитивы типа семафоров/мьютексов, и тд и тп. Это считай уже ядро ОС. Собственно, FreeRTOS в общем-то только это и делает, в ней не особо чего есть больше. Кто тебе это всё будет реализовывать в виде стандартной библиотеки?

Более того. Я подозреваю, что тот же GCC, которым я собираю прошивки, он о микроконтроллере вообще ничего не знает. В результате его работы на выходе получается вполне стандартный ELF, который уже потом всякими тулзами преобразуется в HEX для зашивки
Маньяк Робокряк колесит по городу
Re[5]: std::thread без оси
От: ononim  
Дата: 28.08.25 09:21
Оценка: 6 (1)
O>>>>А что такое хардварный поток?
H>>>Который физически распараллелен, а не перещелкиванием контекста
O>>Во всех современных осях потоки сделаны перещелкиванием контекста. Физических ядер на все потоки не хватит.
H>Ну по ядрам кто это распределяет? Ось? А без нее?
Планировщик задач, который в случае оси является ее частью, но по сути при программирование под голое железо вся ось по сути может собой представлять планировщик и все
Ты пишешь код под что? Под FreeRTOS или таки под какую то жирную операционку? Если первое то там скорее всего std::thread просто не реализован. Можешь реализовать, под конкретный планировщик. Если чтото пожирнее, да хотябы vxWorks, то std::thread может уже и будет работать.
Как много веселых ребят, и все делают велосипед...
Re[3]: std::thread без оси
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.08.25 09:26
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

O>>А что такое хардварный поток?


H>Который физически распараллелен, а не перещелкиванием контекста


А если нет "хардварных" потоков? А если их два, а тебе надо 10 создать?
Маньяк Робокряк колесит по городу
Re[4]: std::thread без оси
От: Hоmunculus  
Дата: 28.08.25 09:27
Оценка:
Здравствуйте, Marty, Вы писали:

M>А если нет "хардварных" потоков? А если их два, а тебе надо 10 создать?


Ну так вопрос в том и был — умеет ли std::thread это или нет
Re[5]: std::thread без оси
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.08.25 09:31
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

M>>А если нет "хардварных" потоков? А если их два, а тебе надо 10 создать?


H>Ну так вопрос в том и был — умеет ли std::thread это или нет


Ну, если бы ты задумался над вопросом: "а как бы это могло бы быть?", то вопроса бы и не было бы
Маньяк Робокряк колесит по городу
Re[5]: std::thread без оси
От: ononim  
Дата: 28.08.25 09:33
Оценка: 6 (1)
M>>А если нет "хардварных" потоков? А если их два, а тебе надо 10 создать?
H>Ну так вопрос в том и был — умеет ли std::thread это или нет
Этот вопрос переводится как умеет ли С++ рантайм который ты пользуешься когда компиляешь код под какую то железку запускать тред на отдельном процессоре. Я думаю можно заранее сказать что нет, но ты можешь написать такой рантайм.
Но обычно дело обстоит так: есть железо, есть ось (хотябы минималистичная, типа FreeRTOS) под это железо и есть С++ рантайм. Потоки обычно реализуются в оси, а поддержка этого АПИ в рантайме С++ — это дело десятое.
А когда потоки реализуются, то в 99.9% случаев они реализуются через переключение контекста по таймеру или хотябы кооперативно. Многопроцессорность идет к этому всему как бонус. Я хз есть ли спецось в которой потоки работали бы строго каждый на своем процессоре и никак иначе. Может и ест в узких нишах. Но врядли можно ожидать что твой С++ рантайм будет работать именно так в твоем случае. Не факт что std::thread вообще будет работать у тебя.
Кстати расскажи подробнее под что ты пишешь, может будет больше инфы из этого
Как много веселых ребят, и все делают велосипед...
Re[3]: std::thread без оси
От: Doom100500 Израиль  
Дата: 28.08.25 13:21
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

H>Здравствуйте, ononim, Вы писали:


H>>>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?

O>>А что такое хардварный поток?

H>Который физически распараллелен, а не перещелкиванием контекста


А CreateThread даёт такие гарантии?
Спасибо за внимание
Re: std::thread без оси
От: σ  
Дата: 28.08.25 13:44
Оценка:
https://timsong-cpp.github.io/cppwp/n4950/intro.compliance.general#def:implementation,freestanding
https://timsong-cpp.github.io/cppwp/n4950/intro.multithread.general#1.sentence-9
Re: std::thread без оси
От: Pzz Россия https://github.com/alexpevzner
Дата: 28.08.25 14:01
Оценка: 6 (1) +1
Здравствуйте, Hоmunculus, Вы писали:

H>О есть какая-то гарантия что без оси создастся хардварный поток?


Даже и с осёй нет.

H>Или это самому надо руками к хардваре стучаться?


Ну у тебя или есть какой-то рантайм, который обеспечивает тебе минимальные удобства (аллокацию памяти там, илициализацию регистров, как C++ надо, потоки те же) или ты с железом один на один.

Есть "операционные системы", которые представляют собой такую большую библиотеку. Т.е., удобства есть, но полноценной оси, с процессами там и защитой памяти от них, нет.
Re[5]: std::thread без оси
От: Pzz Россия https://github.com/alexpevzner
Дата: 28.08.25 14:03
Оценка: 6 (1)
Здравствуйте, Hоmunculus, Вы писали:

H>Я так себе представляю, что разрабы стандратной библиотеки для конкретной архитектуры уже знают хардварные тонкости и все это предусмотрели.


Вопрос в том, как найти стандартную библиотеку, рассчитанную на запуск на голом железе, а не в среде определённой оси.

И, как вариант, можно использовать полноценную ось. Они бывают не только венда и линух, но и промышленные операционные системы. Например, QNX, RTEMS...
Re[4]: std::thread без оси
От: mike_rs Россия  
Дата: 29.08.25 08:07
Оценка: -1
Здравствуйте, Doom100500, Вы писали:

H>>Который физически распараллелен, а не перещелкиванием контекста

D>А CreateThread даёт такие гарантии?

если задать affinity mask, то дает, а что?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.