|
Язык С, ARM - простые вопросы |
|
|
|
Jan 21 2009, 15:17
|
Местный
  
Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011

|
Здравствуйте! Стоит ли пользоваться глобальными переменными и можно ли без них обойтись? В книгах пишут, что глобальные переменные - плохой тон, можно запутаться. А если программа строится в виде задач в бесконечном цикле: Код while (1) { Task1(); Task2(); Task3(); } Как обмениваться сообщениями между задачами? Мне понравилась система глобальных флагов - данные готовы к отправке, данные приняты, какое-то действие завершено и т.д. Как без них?
|
|
|
|
|
 |
Ответов
|
Jan 23 2009, 19:09
|

Местный
  
Группа: Свой
Сообщений: 211
Регистрация: 6-08-07
Из: Приднестровье, Тирасполь
Пользователь №: 29 581

|
Я, вот, по простому спрошу... Допустим, имеем обработчик некоторого прерывания, в котором надо быстро выполнить неотложные действия и установить один или несколько флагов, дабы потом, в основном цикле их неспешно обработать. Как правильно передать эти флаги в основной цикл не используя глобальных переменных?
Сообщение отредактировал Goodefine - Jan 23 2009, 19:11
--------------------
Любой, заслуживающий внимания, опыт приобретается себе в убыток...
|
|
|
|
|
Jan 24 2009, 03:01
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(Goodefine @ Jan 23 2009, 14:09)  Я, вот, по простому спрошу... Допустим, имеем обработчик некоторого прерывания, в котором надо быстро выполнить неотложные действия и установить один или несколько флагов, дабы потом, в основном цикле их неспешно обработать. Как правильно передать эти флаги в основной цикл не используя глобальных переменных? правильно будет использовать глобальные переменные. пойнт в том, что их много быть не должно. если их 60 килобайт, как тут пишут - скорее всего чтото не так в консерватории (общий случай сферического коня в ваккууме)
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Jan 24 2009, 08:47
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(A. Fig Lee @ Jan 24 2009, 05:01)  пойнт в том, что их много быть не должно. Опять  пустые рекомендации. Их должно быть столько, сколько надо. Цитата(VladimirYU @ Jan 24 2009, 10:23)  Да, сложно представить консерваторию, где .. Несколько каналов связи. За каждым свои настройки, состояния, буфера. Просто нужно поднять протокол, ну возьмем что-нибудь простое классическое 70x годов прошлого века LAPB/MLP/X.25. Вашими образами - все должно играть по одной партитуре, хотя музыканты вообще сидят в разных городах и правят друг друга по сбоящему каналу связи. Вполне обычная задача для периферийного контроллера. Начинайте расширять свои представления о жизни в которой есть не только "контролеры светодиодов".
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 24 2009, 17:14
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(zltigo @ Jan 24 2009, 03:47)  Опять  пустые рекомендации. Их должно быть столько, сколько надо. Несколько каналов связи. За каждым свои настройки, состояния, буфера. Просто нужно поднять протокол, ну возьмем что-нибудь простое классическое 70x годов прошлого века LAPB/MLP/X.25. Вашими образами - все должно играть по одной партитуре, хотя музыканты вообще сидят в разных городах и правят друг друга по сбоящему каналу связи. Вполне обычная задача для периферийного контроллера. Начинайте расширять свои представления о жизни в которой есть не только "контролеры светодиодов". ну - почему переменные глобальбые? настройки - для каждого канала (т.е. не глобальные), но все они в глобальном спейсе - плохой дизайн. глобально может быть виден номер канала - все. остальные пропертис - личное дело етого канала и должны бы вызыватся скажем через функцию с хендлом, скажем. я се предстваляю TCP/IP где все глобальное - все данные сокетов и т.д.  ето как кернел - который глобальный для взаимосвязи, остальное все в юзерленд
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
|
Jan 24 2009, 17:50
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(A. Fig Lee @ Jan 24 2009, 20:14)  но все они в глобальном спейсе - плохой дизайн. Ага, все они в стеке это даже не "дизайн" это просто бред. Цитата глобально может быть виден номер канала Упаси бог! "номер канала" ака указатель на конкретную структуру это как раз есть совершенно интимное дело функций работающими с данными каналов. P.S. Вы похоже совершенно путаете локальные переменные, глобальные, и области видимости глобальных.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jan 25 2009, 13:43
|

Знающий
   
Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467

|
Цитата(zltigo @ Jan 24 2009, 12:50)  Ага, все они в стеке это даже не "дизайн" это просто бред.
Упаси бог! "номер канала" ака указатель на конкретную структуру это как раз есть совершенно интимное дело функций работающими с данными каналов.
P.S.
Вы похоже совершенно путаете локальные переменные, глобальные, и области видимости глобальных. Кроме стека есть еще хип. ето совсем не значит что переменные в хипе - глобальные. И видмость их ограничена, глобальные переменные видны отовсюду. если вы обьявили переменную из кучи и сделали ее static в С - она глобальной не будет, несмотря на то, что не на стеке Так, как я говорил - пишется подавляющее большинство програм. Кстати, как вы к елементам структуры канала обращаетесь, если
Сообщение отредактировал A. Fig Lee - Jan 25 2009, 13:43
--------------------
Верить нельзя никому, даже себе. Мне - можно.
|
|
|
|
Сообщений в этой теме
Slash Язык С, ARM - простые вопросы Jan 21 2009, 15:17 aaarrr Цитата(Slash @ Jan 21 2009, 18:17) Стоит ... Jan 21 2009, 15:29 Demeny Цитата(Slash @ Jan 21 2009, 18:17) Стоит ... Jan 22 2009, 08:33 aaarrr Цитата(Demeny @ Jan 22 2009, 11:33) Прави... Jan 22 2009, 09:09  Demeny Цитата(aaarrr @ Jan 22 2009, 12:09) Поясн... Jan 22 2009, 10:20 aaarrr Для отладки глобальные переменные наоборот удобнее... Jan 22 2009, 11:29 Demeny Цитата(aaarrr @ Jan 22 2009, 14:29) Для о... Jan 22 2009, 12:35  aaarrr Цитата(Demeny @ Jan 22 2009, 15:35) Всё э... Jan 22 2009, 12:48  singlskv Цитата(Demeny @ Jan 22 2009, 15:35) Это с... Jan 23 2009, 00:27   Demeny Цитата(singlskv @ Jan 23 2009, 03:27) В к... Jan 23 2009, 07:34   A. Fig Lee Цитата(singlskv @ Jan 22 2009, 19:27) В к... Jan 23 2009, 19:06 VladimirYU Цитата(aaarrr @ Jan 22 2009, 14:29) Для о... Jan 22 2009, 12:52  zltigo Цитата(VladimirYU @ Jan 22 2009, 14:52) К... Jan 22 2009, 13:05  aaarrr Цитата(VladimirYU @ Jan 22 2009, 15:52) Д... Jan 22 2009, 13:05 sergeeff Это скорее организационная проблема. Один человек ... Jan 22 2009, 15:14 zltigo Цитата(sergeeff @ Jan 22 2009, 17:14) Это... Jan 22 2009, 17:14 rezident Я бы предложил спорщикам уточнить, для какой облас... Jan 23 2009, 00:46 rezident Цитата(Demeny @ Jan 23 2009, 12:34) Тепер... Jan 23 2009, 15:10 singlskv Цитата(rezident @ Jan 23 2009, 18:10) Мог... Jan 23 2009, 15:57  Demeny Цитата(singlskv @ Jan 23 2009, 18:57) Я в... Jan 26 2009, 09:58   zltigo Цитата(Demeny @ Jan 26 2009, 12:58) 1) Ес... Jan 26 2009, 10:32    A. Fig Lee Цитата(zltigo @ Jan 26 2009, 05:32) Стати... Jan 26 2009, 14:20     _Pasha Цитата(A. Fig Lee @ Jan 26 2009, 18:20) Т... Jan 26 2009, 14:49      A. Fig Lee Цитата(_Pasha @ Jan 26 2009, 09:49) Стати... Jan 26 2009, 17:55       _Pasha Цитата(A. Fig Lee @ Jan 26 2009, 21:55) 2... Jan 26 2009, 18:33        sonycman Цитата(_Pasha @ Jan 26 2009, 22:33) стати... Jan 26 2009, 20:17         singlskv Цитата(sonycman @ Jan 26 2009, 23:17) А е... Jan 26 2009, 20:27          rezident Цитата(singlskv @ Jan 27 2009, 01:27) Бол... Jan 26 2009, 20:40           singlskv Цитата(rezident @ Jan 26 2009, 23:40) Раб... Jan 26 2009, 21:29            sonycman Цитата(singlskv @ Jan 27 2009, 01:29) Вас... Jan 26 2009, 21:51            Dima_G Цитата(singlskv @ Jan 27 2009, 01:29) Я э... Jan 28 2009, 10:21             A. Fig Lee Цитата(Dima_G @ Jan 28 2009, 05:21) Локал... Jan 28 2009, 14:45          sonycman Цитата(singlskv @ Jan 27 2009, 00:27) Пер... Jan 26 2009, 21:07       singlskv Цитата(A. Fig Lee @ Jan 26 2009, 20:55) 2... Jan 26 2009, 19:45        A. Fig Lee Цитата(singlskv @ Jan 26 2009, 14:45) Вот... Jan 26 2009, 22:07         zltigo Цитата(A. Fig Lee @ Jan 27 2009, 01:07) О... Jan 26 2009, 22:52         singlskv Цитата(A. Fig Lee @ Jan 27 2009, 01:07) Н... Jan 26 2009, 22:52          A. Fig Lee Цитата(singlskv @ Jan 26 2009, 17:52) ага... Jan 26 2009, 23:46     zltigo Цитата(A. Fig Lee @ Jan 26 2009, 17:20) Т... Jan 26 2009, 15:22   Dog Pawlowa Цитата(Demeny @ Jan 26 2009, 12:58) Попро... Jan 26 2009, 10:45    _Pasha Цитата(Dog Pawlowa @ Jan 26 2009, 13:45) ... Jan 26 2009, 11:13     Dog Pawlowa Цитата(_Pasha @ Jan 26 2009, 14:13) Есть ... Jan 26 2009, 15:10      _Pasha Цитата(Dog Pawlowa @ Jan 26 2009, 18:10) ... Jan 26 2009, 15:23       zltigo Цитата(_Pasha @ Jan 26 2009, 18:23) Один ... Jan 26 2009, 15:25  VladimirYU Цитата(A. Fig Lee @ Jan 24 2009, 06:01) п... Jan 24 2009, 08:23   _Pasha Цитата(zltigo @ Jan 24 2009, 11:47) Их до... Jan 24 2009, 14:43 Serj78 Можно, я свои 5 копеек вставлю?
Иногда , на мало... Jan 24 2009, 08:14 A. Fig Lee вот правильный стандард - C++:
The zeroinitializa... Jan 27 2009, 14:42 zltigo Цитата(A. Fig Lee @ Jan 27 2009, 17:42) в... Jan 27 2009, 16:10  A. Fig Lee Цитата(zltigo @ Jan 27 2009, 11:10) Вы, к... Jan 27 2009, 16:23 singlskv Цитатакстати, я все никак не добьюсь - речь о C ил... Jan 27 2009, 22:27  A. Fig Lee Цитата(singlskv @ Jan 27 2009, 17:27) Ну ... Jan 27 2009, 23:44 rezident Модератор. Тема закрыта по просьбе топикстартера. Feb 2 2009, 21:01
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|