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.
Powiązane problemy
- 1. Podstawowe pętli zdarzeń w Pythonie
- 2. Utwórz obserwowalne dla pętli zdarzeń
- 3. Eclipse Nieobsługiwany wyjątek pętli zdarzeń
- 4. Kiedy używać wielu pętli zdarzeń?
- 5. Czy ocena pętli C++ 11 dla każdego cyklu jest oceniana?
- 6. C++ 11 regex_token_iterator
- 7. W jaki sposób należy zapętlić klasy enum w C++ 11?
- 8. Sposoby przyspieszenia czasu budowy? (C#/Unmanaged C++)
- 9. Sposób użycia dla każdej pętli w C++
- 10. Wydajność pętli w stylu nowoczesnym C++ 11 w porównaniu do pętli w starym stylu
- 11. Konieczność zamknięcia asyncio pętli zdarzeń explicite
- 12. Prześlij zadanie do pętli zdarzeń asyncio
- 13. Asynchroniczne projektowanie pętli zdarzeń i problemy
- 14. Nie można utworzyć pętli zdarzeń potomnych
- 15. wektor przyszłości w C++ 11
- 16. C++ 11 liczb losowych
- 17. Jak przenieść istniejący kod C++ do C++ 11
- 18. C++ 11 wydajność krotki
- 19. C++ 11 predefiniowane makro
- 20. Mapa mutex C++ 11
- 21. C++ 11 alternatywa pthread_cond_timedwait
- 22. C++ 11 Regex Matching
- 23. C++ 11: lambda, currying
- 24. C++ 11: Uniwersalny wykonawca
- 25. Biblioteka refleksyjna C++ 11
- 26. C++ 11 Destructor = delete
- 27. zainicjować mapę C++ 11
- 28. W jaki sposób zaimplementujesz podstawową pętlę zdarzeń?
- 29. Zamień BOOST_FOREACH na "czystą" wersję C++ 11?
- 30. C#: N pętli
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