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

C++ Extensions for Concurrency

Ostatnio zmodyfikowano 2017-07-28 18:29
Autor Wiadomość
mokrowski
» 2017-07-27 17:17:07

A gdzie tam, całe TS jest trywialnie implementowalne przy pomocy pthreads, które istnieje chyba na każdym praktycznym systemie operacyjnym, i którego libstdc++ używa tam, gdzie się da — nawet pod Windowsem.
Całość wątków jest implementowana na podstawie natywnej obsługi dostępnej w danym systemie operacyjnym. Biblioteka standardowa daje tylko uchwyt do tych natywnych wątków. Czasem się przydaje jeśli chcesz np. przestawić ich priorytet lub użyć czegoś czego stdlibc++ nie ma i nie będzie miało.

https://msdn.microsoft.com/en-us/library/hh920601.aspx#thread__native_handle_method
http://en.cppreference.com/w/cpp/thread/thread/native_handle

Dla systemów POSIX skończy się na API pthread. W MS Windows otrzymasz uchwyt do "threadów windows".
P-163626
j23
» 2017-07-27 18:10:43
@mokrowski, jak zainstalujesz MinGW-w64 z nie-POSIX-owym modelem, to nie będziesz miał klas takich jak std::thread czy std::mutex pomimo włączonego standardu C++11 i wyżej.
P-163629
mokrowski
» 2017-07-27 18:59:17
@j23 być może (nie sprawdzałem bo nie używam). Czyli luka (nie pierwsza) w implementacji standardu :-) Dzięki za informację.
P-163642
j23
» 2017-07-28 10:54:34
@mokrowski, to nie tyle luka, co po prostu wymóg użycia odpowiedniego API do obsługi wielowątkowości. Czyli jak chcesz kompilować swoje programy w standardzie starszym niż C++11, wybierasz model z API systemowym, a jeśli w nowych - wtedy POSIX-owe wątki.

P-163650
mokrowski
» 2017-07-28 17:54:46
@j23 w którym miejscu standard C++11 (i nowsze) wskazuje konieczność użycia posixowych wątków? Ja znalazłem coś zgoła przeciwnego. Brak wskazania jednego API (rozdział 30 a szczególnie 30.2.3 gdzie jawnie mówi się o natywnym API w standardzie C++11), oraz wymóg implementacji w trybie hosted kompilatora nagłówka <thread> oraz <mutex> (dla freestanding nie ma za to co ciekawe jest <atomic>) dla biblioteki standardowej. A nie można podejrzewać że MinGW-w64 w Win jest freestanding :-)
Przed C++11 zgadzam się. Jest się skazanym na wątki w API systemowym bo standard języka przed C++11 tego nie obejmował.
Dlaczego bać się nazywać rzecz po imieniu? Standard C++11 wymaga, dana implementacja w danej wersji na danym systemie tego nie ma.. ergo ... luka w implementacji standardu :-)
P-163666
j23
» 2017-07-28 18:19:22
@mokrowski, nie zrozumiałeś mnie. Nie chodziło o wymóg nałożony przez standard C++, tylko przez twórcę MinGW-w64 (albo raczej twórcę biblioteki, którą ten kompilator używa). Tak się akurat składa, że przy instalacji tego kompilatora masz możliwość wyboru API. To, co napisałem wcześniej, miało dowieść temu, co napisał Elaine, że użycie pthreads całkowicie rozwiązuje problem przeniesienia biblioteki do obsługi wątków na Windowsa.
P-163670
mokrowski
» 2017-07-28 18:29:07
@j23 ok... teraz dla mnie jasne :-)
P-163671
1 « 2 »
Poprzednia strona Strona 2 z 2