2013-05-16 48 views
6

Jaka jest podstawowa struktura systemu pętli zdarzeń w C++ 11? W jaki sposób realizowane są kluczowe elementy (takie jak kolejka wiadomości, dyspozytor komunikatów, sygnał)? Na przykład, czy nadal potrzebuję std::queue<Message>, std::mutex i std::condition_variable jak to zrobiłem w sposobie C++ 98 + zwiększenie sposób? Również wydajność ma znaczenie w rozwiązaniu, którego szukam.Sposób C++ 11 budowy pętli zdarzeń

+5

Nie ma żadnych klas wysokiego poziomu, takich jak kolejki wiadomości w standardzie, więc nadal musiałbyś tworzyć własne typy, o których wspomniałeś. – juanchopanza

+5

Jeśli wydajność ma znaczenie, pozostań przy mechanizmach natywnych dla docelowego systemu operacyjnego. Na przykład użyj 'kqueue', jeśli celujesz w OS X, lub' epoll', aby uzyskać najlepsze wyniki w systemie Linux. C++ 11 nie ma z tym nic wspólnego. –

+2

Jeśli korzystasz już z Boost, możesz użyć Boost.Asio. – beerboy

Odpowiedz

2

Zrób to mniej więcej tak samo, jak zrobiłbyś to w C++ 98. Możesz zastąpić niektóre specyficzne dla platformy rzeczy, takie jak pthread_t, pthread_mutex i pthread_cond ze znormalizowanymi odpowiednikami (std :: thread, std :: {recursive _,} {timed _,} mutex i std :: condition_variable {, _ any}), ale podstawowy projekt jest taki sam.

Jak wspomniał @beerboy, Boost.Asio może być dobrym miejscem do rozpoczęcia, mimo że AFAIK nie został jeszcze zaktualizowany dla C++ 11.