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

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> Альтернативный вариант задания функции процесса
AHTOXA
сообщение Nov 17 2012, 20:10
Сообщение #46


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Я так понимаю, никто не впечатлился? laughing.gif
Да, это очевидно и тривиально, зато переносимо и достигает цели.
Хочу вот что спросить. Почему в этом варианте срабатывает static_cast и не срабатывает reinterpret_cast? Судя по листингу, static_cast вставляет какую-то проверку, и в зависимости от её результата, вызывает разные адреса. В тех описаниях этих *_cast, которые мне попались, ничего про такую интеллектуальность static_cast не было.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Vasya777
сообщение Mar 20 2013, 16:59
Сообщение #47


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 22-01-12
Пользователь №: 69 790



Предлагаю другой вариант

Пользовательские классы
Код
class Proc1
{
public:
    OS_PROCESS void exec();
};

class Proc2
{
public:
    OS_PROCESS void exec();
};

class Proc3
{
public:
    OS_PROCESS void exec();
};

Proc1 p1;
Proc2 p2;
Proc3 p3;


Процессы
Код
typedef OS::process<OS::pr0, 300, Proc1, &p1> TProc1;
typedef OS::process<OS::pr1, 300, Proc2, &p2> TProc2;
typedef OS::process<OS::pr2, 300, Proc3, &p3> TProc3;

TProc1 Proc1;
TProc2 Proc2;
TProc3 Proc3;


Функция процесса вызывает конкретную функцию конкретного класса
Код
template<TPriority pr, size_t stack_size, class T, T* p>
OS_PROCESS static void process::exec()
{
    p->exec();
}


Сообщение отредактировал Vasya777 - Mar 20 2013, 17:04
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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