-
- Ну вот объясни, как оно работает, когда два потока одновременно вызывают malloc() ? Скажешь УМВР? Не о чём говорить с адептами RTOS'ов которые даже не знают как у них эти RTOS'ы (не)работают. - fk0(26.11.2013 20:11)
- Не о чем говорить с человеком, который не понимает, что malloc в частности и куча в целом никакого отношение к TLS не имеет, но утверждает, что без него никак... - aoreh(26.11.2013 20:38)
- само по себе thread в разных кмопиляторах выглядит по разному, разными ОС поддерживается по разному, в той же винде есть тонкости в разных версиях по использованию этой фишки в длл. Это что касается статик-линк версии, динамическое так вообще aoreh(137 знак., 27.11.2013 11:33 - 11:49)
- От компилятора потоки не зависят. Нужна только поддержка в libc. Как IAR, Keil и др. не знаю. В "больших" ОС всё есть. В более-менее серьёзных RTOS своя libc или её часть (или хотя бы берут newlib) где предусмотрена многопоточность. Собственно от fk0(222 знак., 27.11.2013 11:54)
- т.е. возвращаемся к тому, что если ОС нормальная и библиотека многопоточная, то можно об TLS не знать? aoreh(292 знак., 27.11.2013 12:02)
- Многопоточная библиотека в своей реализации опирается на TLS и это принципильно. А самому о TLS можно и не знать, если оно не нужно в своих задачах. TLS-переменная может просто глобальной переменной, не обязательно регистром процессора и т.п. - fk0(27.11.2013 13:15)
- Вдогонку. Глобальной переменной может быть только для одноядерных микроконтроллеров (коих пока большинство). - fk0(27.11.2013 13:29)
- В итоге спор получился ни о чем... правда может кому будет полезен с точки зрения просвещения... Я раньше не знал, что в самих компилляторах есть поддержка TLS переменных (__thread в GCC), правда пока так и не понял насколько она стандартизирована aoreh(205 знак., 27.11.2013 13:24 - 13:27)
- Многопоточная библиотека в своей реализации опирается на TLS и это принципильно. А самому о TLS можно и не знать, если оно не нужно в своих задачах. TLS-переменная может просто глобальной переменной, не обязательно регистром процессора и т.п. - fk0(27.11.2013 13:15)
- т.е. возвращаемся к тому, что если ОС нормальная и библиотека многопоточная, то можно об TLS не знать? aoreh(292 знак., 27.11.2013 12:02)
- От компилятора потоки не зависят. Нужна только поддержка в libc. Как IAR, Keil и др. не знаю. В "больших" ОС всё есть. В более-менее серьёзных RTOS своя libc или её часть (или хотя бы берут newlib) где предусмотрена многопоточность. Собственно от fk0(222 знак., 27.11.2013 11:54)
- Не о чём говорить с человеком, который не понимает, что malloc устанавливает переменную errno, которую без TLS ну никак не сделать. - fk0(27.11.2013 01:55)
- О Боже и как же мы раньше маллок использовали без столько ценной переменной.... - aoreh(27.11.2013 11:30)
- Использовали как обычно. Но странно не понимать, что это ломает работающие в соседнем потоке математические функции из math.h, где без errno бывает не обойтись. - fk0(27.11.2013 11:37)
- А свой malloc/new написать не выход разве? Который учтывает многозадачность? Apтём(263 знак., 27.11.2013 02:11)
- Задача стандартная -- делаем сразу свой процессор с аппаратным TLS... - fk0(27.11.2013 11:38, ссылка)
- О Боже и как же мы раньше маллок использовали без столько ценной переменной.... - aoreh(27.11.2013 11:30)
- само по себе thread в разных кмопиляторах выглядит по разному, разными ОС поддерживается по разному, в той же винде есть тонкости в разных версиях по использованию этой фишки в длл. Это что касается статик-линк версии, динамическое так вообще aoreh(137 знак., 27.11.2013 11:33 - 11:49)
- Не о чем говорить с человеком, который не понимает, что malloc в частности и куча в целом никакого отношение к TLS не имеет, но утверждает, что без него никак... - aoreh(26.11.2013 20:38)
- Ну вот объясни, как оно работает, когда два потока одновременно вызывают malloc() ? Скажешь УМВР? Не о чём говорить с адептами RTOS'ов которые даже не знают как у них эти RTOS'ы (не)работают. - fk0(26.11.2013 20:11)