Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Можно сказать компилеру сделай копии функции под одним именем и запускай в каждом потоке свою - обзови функции static void ABC и тогда спокойно размести ее копии в разных файлах(потоках) тогда будут запускаться копии под одним именем. >>
Отправлено
VasilyS 28 ноября 2009, г. 11:04
В ответ на:
шотавыменясовсемзапутали)) отправлено пользователем
колян безпарольный 28 ноября 2009, г. 01:34
Но это только сами коды функций, этого мало для спокойствия. Данные, которыми оперирует такая функция, должны находиться каждая в стеке своего потока. Переключится поток - и данные друг дружке не мешают.
Или, например можно разместить данные вне функций, но объявить их как static и разместить в файлах, где твои static-функции, чтобы они видны были. Тогда тоже они не помешают друг дружке. И даже не особо засрут RAM: недавно убедилсо, что ИАР смотрит и где можно повторно утилизует место под static переменные в пределах своего файла.
А семафоры - это есть обращаться к общим ресурсам: таймеру там, ADC... Это механизм, при котором функция, вынужденная обращаться к общим ресурсам, становится реентрн.. короче, ты понял.
Составить ответ | Вернуться на конференцию.
Ответы