akwes Temat założony przez niniejszego użytkownika |
Wprowadzenie wielowątkowości w C++ » 2013-04-16 16:19:44 Właśnie sobie czytam pewien materiał z 2004 roku (w formie analogowej ;>), który opisuje zalety braku obsługi wielowątkowości w C++. Po pierwsze, że można wykorzystać pełne wsparcie wielowątkowości od strony systemu (ok, to można cały czas zrobić, nikt nie zmusza do używania std::thread), ale jako drugi powód autor podał argument, że: Wbudowanie obsługi mechanizmu wielowątkowości w struktury języka ograniczałoby użycie C++ do kręgu tych środowisk, które wielowątkowość mogłyby obsługiwać, co spowodowałoby niemożność wykorzystania języka C++ do tworzenia programów dla środowisk nieobsługujących wątków. |
Czy wraz z nadejściem C++11 właśnie to się stało? Zdaje się, że takim samym argumentem posługują się ludzie, gdyby ich zapytać o brak wbudowanej biblioteki graficznej dla C++. Tłumaczy się to zbyt dużymi różnicami w architekturze środowisk w których ma C++ działać, analogicznie jak w kwestii wątków, wiązałoby się to z ograniczeniem uniwersalności języka i jego efektywności. |
|
DejaVu |
» 2013-04-16 16:21:55 Wielowątkowość nie jest niczym nowym w C++? Przecież pierwsza lepsza gra sieciowa wykorzystuje wielowątkowość... narzędzia do obsługi wielowątkowości, które przyszły wraz ze standardem C++11 wcale nie ograniczają drastycznie możliwości. Dają wspólne API dla różnych systemów operacyjnych, a przy tym umożliwiają pobranie uchwytu do wątku w postaci dedykowanej dla danego systemu, dając tym samym możliwość wykorzystywania 'unikatowych' narzędzi wielowątkowych dostępnych na danym systemie.
/edit:
a co to w ogóle za artykuł...? |
|
pekfos |
» 2013-04-16 16:28:17 co spowodowałoby niemożność wykorzystania języka C++ do tworzenia programów dla środowisk nieobsługujących wątków. |
Jeśli jakieś środowisko w ogóle nie obsługuje wątków, to chyba nikt się nie obrazi, jeżeli implementacja biblioteki standardowej na tą platformę nie będzie mieć obsługi wątków :> |
|
akwes Temat założony przez niniejszego użytkownika |
» 2013-04-16 16:37:16 Nie chodzi o sam fakt istnienia wielowątkowości (zwłaszcza, że autor dalej opisuje używanie wielowątkowości w systemie Windows), ale właśnie o brak zunifikowanego systemu zarządzania nią. Dodam może cały akapit: Język C++ został zaprojektowany z myślą o wszystkich dziedzinach programowania, od oprogramowania wewnętrznego, w przypadku którego w środowisku wykonania nie występuje system operacyjny, do rozproszonych aplikacji użytkowych z graficznym interfejsem użytkownika. Widać więc, że język C++ nie może nakładać znaczących ograniczeń na środowisko wykonania. Wbudowanie obsługi mechanizmu wielowątkowości w struktury języka ograniczałoby użycie C++ do kręgu tych środowisk, które wielowątkowość mogłyby obsługiwać, co spowodowałoby niemożność wykorzystania języka C++ do tworzenia programów dla środowisk nieobsługujących wątków.
|
Jest to fragment książki autorstwa Herberta Schildta. Tak, wiem jaką masz opinię o książkach :) Po prostu mnie zastanawia czy z momentem wejścia C++11, C++ zostało jak gdyby zamknięte na pewną grupę urządzeń, w postaci starszego standardu? |
|
pekfos |
» 2013-04-16 16:41:04 Obsługa wątków w C++ to biblioteka standardowa, a nie rdzeń języka. Jak się, na przykład, pisze system operacyjny, to istnienie obsługi wątków w bibliotece standardowej (którą trzeba dopiero napisać) nie przeszkadza :) |
|
DejaVu |
» 2013-04-16 22:14:19 Wątpliwa jest wiedza merytoryczna autora wspomnianego artykułu na temat C++, skoro widzi zależność między obsługą wątków, a ograniczeniem możliwości C++ (a przynajmniej wiedzą wątpliwą dysponował w 2004 roku czy tam kiedy był ten artykuł pisany). Dodam jeszcze, że w 2004 roku Intel dopiero wypuszczał jednordzeniowy procesor Intel Pentium 4 HT do domowego użytku, więc wyniosłe artykuły na temat wielowątkowości można włożyć sobie między bajki. |
|
Monika90 |
» 2013-04-16 22:15:58 Wielowątkowść w C++11 to nie tylko biblioteka, to również rdzeń języka (model pamięci, thread_local). Ale to nic, gdyż wielowątkowść w C++11 jest opcjonalna. Wyróżnia się dwa rodzaje implementacji: hosted i freestanding, freestanding nie musi mieć wątków, ani wielu elementów biblioteki standardowej. |
|
akwes Temat założony przez niniejszego użytkownika |
» 2013-04-16 22:30:30 @DejaVu, wydaje mi się (może dlatego, że przeczytałem cały artykuł), że autorowi nie chodzi o bezpośrednie ograniczenie możliwości C++ ale ograniczenie urządzeń na których może C++ działać. Patrząc z punktu, że C++ to nie tylko PC ale również systemy central telefonicznych i często najprostsze mikrokontrolery (bo są pisane nie tylko w C). Po prostu zastanawiało mnie to, jak się będzie w takich gałęziach rozwijać C++. Post użytkownika Monika90, rozwijał moje wątpliwości :) |
|
« 1 » |