Программирование, управляемое событиями - циклы событий?

Мне просто интересно, связана ли какая-либо реализация цикла событий с кодом, специфичным для платформы?

Под циклом событий я имею в виду простой поток, который проверяет очередь, работает с сообщениями и соответствующим образом отправляет обратные вызовы.

Потому что я просто не понимаю, как я смогу написать его без использования примеров:

-Семафор/мьютекс/объект события/Sleep() [windows].

Что, конечно же, вышеперечисленное не одинаково для каждой операционной системы.

Кстати, это для C/C++.


person Andy Carter    schedule 16.12.2013    source источник


Ответы (1)


В нескольких переносимых кросс-платформенных средах C++ реализована очередь событий, например ACE Каркас реактора. Другой пример — Qt.

person piokuc    schedule 16.12.2013
comment
Ну, конечно, даже C++11 имеет многоплатформенную многопоточность, основанную на boost, но разве они не просто обертки, созданные с помощью условной компиляции? - person Andy Carter; 16.12.2013
comment
Конечно, кроссплатформенный код C++, работающий с потоками и механизмами синхронизации, должен будет включать некоторую условную компиляцию. Но разве это проблема? Вам не нужно будет писать ни одного #ifdef самостоятельно, весь условный код завернут внутрь фреймворков. - person piokuc; 16.12.2013
comment
Нет, это не проблема. Я просто хотел подтвердить свои предположения. Большое спасибо! - person Andy Carter; 16.12.2013
comment
Просто хотел добавить, что если вы видите, как достичь того, что вам нужно, используя функции C++11 и/или BOOST, плюс вы знаете, что можете использовать C++11 и/или BOOST на своих целевых платформах, тогда дерзайте! - person piokuc; 16.12.2013
comment
Моей первоначальной идеей было написать ее с нуля. Создайте свой собственный цикл обработки событий и выполните условную компиляцию. Так что - что-то вроде написания моей собственной библиотеки событий, так сказать. - person Andy Carter; 16.12.2013