Здравствуйте, ·, Вы писали:
V>>>>sig_atomic_t — должен гарантировать атомарность записи в эту переменную, для тех времён было достаточно, чтобы такая переменная была шириной в машинное слово.
V>>·>Понятие многопоточности появилось в языке совсем недавно.
V>>Понятие многопоточности в языке появилось давно, одновременно с ключевым словом volatile.
·>volatile не связана с многопоточностью.
V>>Скорее всего ты имеешь ввиду не в языке, а в новой стандартной библиотеке?
V>>Потому что нововведения именно в язык никак с многопоточностью не связаны.
·>Читай memory model, я ж уже несколько раз упоминал.
Ты прочесть написанное уже не в состоянии, что ле? (выделил)
Еще раз, медленно, это всё обслуживается стандартной библиотекой, а не конструкциями языка.
Т.е. аналоги можно нарисовать на любых ООП-языках через аналогичные либы.
V>>Вытеснение происходит за счёт асинхронного механизма прерывания. Но этот механизм гарантирует, что текущая исполняемая инструкция будет выполнена полностью перед тем, как текущий поток исполнения будет прерван. Именно поэтому требовалось читать и писать из/в память одной инструкцией.
·>Вот только такая многопоточность появилась на уровне оперы и железа, а сам язык "ничего не знал"
Язык Си, напомню, был разработан как замена Ассемблеру для развития Unix.
Поэтому, кое-какие "знания", хотя бы через typedef, в программу перетащить можно — потому что именно так и задумывалось, чтобы было можно.
В случае sig_atomic_t требовалось протащить то "знание", что чтение и запись в эту переменную будет выполняться одной инструкцией процессора.
Этого достаточно, чтобы
асинхронный механизм прерываний работал в такой программе непротиворечиво.
·>поэтому никаких гарантий давать не мог, как карта ляжет, так себя код и поведёт, UB.
Это ты сейчас из пальца насасывать изволишь, а механизм сигналинга в Unix изначально был реализован через прерывания и этот механизм работает прекрасно.
Иначе бы ты не смог сегодян написать в коде
kill(pid, SIGTERM) или в консоли
kill 4242 -9.
·>Утверждать, что "в С++ была многопоточность" равноценно "в С++ есть http".
Согласно дизайну, многопоточность реализована в виде внешнего механизма.
Язык может лишь учитывать наличие такого механизма, пример с volatile уже приведён.
А через оформление механизма многопоточности в виде библиотечных примитивов такая ситуация отливается из бетона навечно, походу.
(кстате, очень жаль)
·>Нюанс в том, что многопоточность — особенная штука
Ньюанс в том, что ты применяешь много слов не по делу.
Давай ближе к теме.
Примеры, контрпримеры, разногласия, уточнения и т.д.
V>>Обе системы однопроцессорные, мультизадачные, с похожим механизмом прерываний, который (механизм) дожил практически в неизменном виде до эпохи микропроцессоров и тоже стал мейнстримовым.
·>Осталось тебе разобраться какое это отношение имеет непосредственно к ЯП С/С++.
))
Тут про молоко на губах разве что ответить можно.