Re[5]: std::thread без оси
От: ononim  
Дата: 29.08.25 09:37
Оценка: +1
_>если задать affinity mask, то дает, а что?
Он тогда дает гарантию что твой тред не будет работать нигде кроме указанного процессора/ов.
Но это вовсе не гарантирует что никто кроме тебя не будет работать на этом процессоре, и соответственно вызывать context switch-и.
Как много веселых ребят, и все делают велосипед...
Re[5]: std::thread без оси
От: Doom100500 Израиль  
Дата: 29.08.25 12:02
Оценка:
Здравствуйте, mike_rs, Вы писали:

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


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

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

_>если задать affinity mask, то дает.


И автоматически сразы никакой другой процесс не полезет в твой афинити, да? И Переключения контекста не будет, да?

_>а что?


Ну вот и всё
Спасибо за внимание
Re: std::thread без оси
От: B0FEE664  
Дата: 29.08.25 12:23
Оценка: 6 (1) +1
Здравствуйте, Hоmunculus, Вы писали:

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


Если запускать без операционной системы, то будет создан ровно один поток (в котором будет запущена main функция), он же "хардварный". Мне не известны компиляторы, которые реализуют поддержку std::thread без операционной системы. Я таким не занимался, но теоретически можно скомпилировать исходники так, чтобы полученный в результате сборки бинарник содержал в себе часть операционной системы необходимой для запуска программы и запускал эту программу при старте. Однако гарантий "хардварности" этого потока всё равно нет.
И каждый день — без права на ошибку...
Re[2]: std::thread без оси
От: fk0 Россия https://fk0.name
Дата: 30.08.25 10:08
Оценка:
Здравствуйте, Marty, Вы писали:

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

M>Нет конечно. Как ты себе это представляешь?

В прерываниях делаем условно setjmp и longjmp...
Re: std::thread без оси
От: cppguard  
Дата: 31.08.25 02:54
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

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


Немного оффтопну. А какой смысл писать сложные программы для голого железа? Там столько уровней абстракций, что страшно представить количество человеко-часов, чтобы реализовать хотя бы всё базовое из POSIX.
Re: std::thread без оси
От: LaptevVV Россия  
Дата: 31.08.25 05:04
Оценка:
H>О есть какая-то гарантия что без оси создастся хардварный поток? Или это самому надо руками к хардваре стучаться?
Гарантий нет.
Я на 98.5% уверен, что без оси ничего нет, но 1.5% — я б проверил.
Если что, то я писал ось на пустую машину.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: std::thread без оси
От: B0FEE664  
Дата: 01.09.25 08:55
Оценка:
Здравствуйте, cppguard, Вы писали:

C>Немного оффтопну. А какой смысл писать сложные программы для голого железа? Там столько уровней абстракций, что страшно представить количество человеко-часов, чтобы реализовать хотя бы всё базовое из POSIX.


Это делается для случаев, когда от софта зависит жизнь людей: медицина, авионика и тому подобное. Поэтому всякие позиксы с лицензиями "мы ни за что не отвечаем", по законам (различных стран) не могут быть использованы.
И каждый день — без права на ошибку...
Re[3]: std::thread без оси
От: steep8  
Дата: 01.09.25 10:31
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Это делается для случаев, когда от софта зависит жизнь людей: медицина, авионика и тому подобное. Поэтому всякие позиксы с лицензиями "мы ни за что не отвечаем", по законам (различных стран) не могут быть использованы.


для этого берут сертифицированную ось типа qnx , а не пишут свой велосипед.
Re[4]: std::thread без оси
От: B0FEE664  
Дата: 01.09.25 12:24
Оценка:
Здравствуйте, steep8, Вы писали:

S>для этого берут сертифицированную ось типа qnx , а не пишут свой велосипед.

Пишут и ещё как пишут. Во-первых в больших конторах можно переиспользовать уже существующую кодовую базу, а во-вторых штуку за разработчика в месяц за всё время жизни продукта (а это десятки лет) — получится существенная сумма.
И каждый день — без права на ошибку...
Re[6]: std::thread без оси
От: vdimas Россия  
Дата: 02.09.25 22:23
Оценка:
Здравствуйте, ononim, Вы писали:

O>А когда потоки реализуются, то в 99.9% случаев они реализуются через переключение контекста по таймеру или хотябы кооперативно. Многопроцессорность идет к этому всему как бонус.


Угу.
Даже просто запустить на железке второй поток при наличии второго ядра (или более ядер и процов) — это немножко приседаний требуется, бо при запуске все остальные ядра, кроме ядра 0 процессора 0, запускаются в т.н. "состоянии сна". Эти другие процы/ядра надо разбудить через специальное прерывание, указав адрес, с которого начать исполнять код.

Далее.
Существуют различные реализации STL с поддержкой различных стандартов АПИ для различных ОС.
Если оси нет, но под контроллер есть либы создания и переключения потоков + примитивы синхронизации, то ты можешь сам написать эту часть STL, чтобы использовать, допустим, имеющийся уже готовый код в своей разработке для железки.
Re[3]: std::thread без оси
От: cppguard  
Дата: 08.09.25 02:48
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Это делается для случаев, когда от софта зависит жизнь людей: медицина, авионика и тому подобное. Поэтому всякие позиксы с лицензиями "мы ни за что не отвечаем", по законам (различных стран) не могут быть использованы.


Так POSIX это стандарт, а не продукт. QNX, например, реализует POSIX и вполне используется в таких проектах. В mission-critical задачах используется слоёный подход, и только самые нижние слои пишутся в голом железе, где нет потоков, потому что потоки это априори боль, страдания и race-conditions.
Re: std::thread без оси
От: andyp  
Дата: 08.09.25 09:03
Оценка:
Здравствуйте, Hоmunculus, Вы писали:

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


Без оси тебе потоки скорее всего в либу не положат. Старая традиция
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.