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ń
6
A
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.
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
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. –
Jeśli korzystasz już z Boost, możesz użyć Boost.Asio. – beerboy