C++ Extensions for Concurrency
Ostatnio zmodyfikowano 2017-07-28 18:29
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". |
|
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. |
|
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ę. |
|
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.
|
|
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 :-) |
|
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. |
|
mokrowski |
» 2017-07-28 18:29:07 @j23 ok... teraz dla mnie jasne :-) |
|
1 « 2 » |