Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Wprowadzenie wielowątkowości w C++

Ostatnio zmodyfikowano 2013-04-16 22:30
Autor Wiadomość
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.
P-80648
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ł...?
P-80649
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 :>
P-80650
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?
P-80651
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 :)
P-80652
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.
P-80687
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.
P-80688
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 :) 
P-80691
« 1 »
  Strona 1 z 1