реклама на сайте
подробности

 
 
> Sleep вне класса-процесса
Neutron
сообщение Jan 19 2012, 09:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 1-10-07
Пользователь №: 30 960



Привет!
Делаю первые шаги в освоении scmRTOS. Пока нравится. AVR Mega128 . Не очень силён в С++. Вопрос следующий: можно ли вызывать функции процесса извне его определения?
CODE

template<> void TProc2::Exec() {
while(1) {
foo();
....
}
}

void foo ( void ){
TProc2.Sleep(10); ???
}

Есть в проекте много функций для ввода различных данных с клавиатуры, в которых используется ожидание по времени.
Все планируется повесить на один процесс.
Спасибо за ответы.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Сергей Борщ
сообщение Jan 19 2012, 10:19
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Функция Sleep() (в версии 4 - sleep()) - статическая, поэтому ее можно вызывать без привязки к конкретному процессу: OS::TBaseProcess::Sleep(10); и, естественно, делать это из любого места (ну, кроме прерываний, разумеется).

В версии 4 в пространстве имен OS введена функция-обертка, там можно писать OS::sleep(10);
CODE
namespace OS
{
    INLINE void sleep(timeout_t t = 0) { TBaseProcess::sleep(t); }
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Neutron
сообщение Jan 19 2012, 10:34
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 1-10-07
Пользователь №: 30 960



Цитата(Сергей Борщ @ Jan 19 2012, 13:19) *
Функция Sleep() (в версии 4 - sleep()) - статическая, поэтому ее можно вызывать без привязки к конкретному процессу: OS::TBaseProcess::Sleep(10); и, естественно, делать это из любого места (ну, кроме прерываний, разумеется).

В версии 4 в пространстве имен OS введена функция-обертка, там можно писать OS::sleep(10);
Код
namespace OS
{
    INLINE void sleep(timeout_t t = 0) { TBaseProcess::sleep(t); }
}


Спасибо. Только не пойму какой тогда (из нескольких процессов) будет спать? Мне нужно уложить спать определённый.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jan 19 2012, 11:58
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (Neutron @ Jan 19 2012, 12:34) *
Спасибо. Только не пойму какой тогда (из нескольких процессов) будет спать?
Текущий, тот, который в данный момент выполняет этот код.
Все остальные процессы в этот момент и так приостановлены.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th July 2025 - 04:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016