Pthreads (POSIX Threads) to ustandaryzowany interfejs API oparty na języku C do tworzenia i manipulowania wątkami. Obecnie jest zdefiniowany w POSIX.1-2008 (IEEE Std 1003.1, 2013 Edition / The Open Group Base Specifications Issue 7).
Czytam dalej pthread.h; funkcje związane ze zmienną warunkową (jak pthread_cond_wait(3)) wymagają muteksu jako argumentu. Czemu? O ile mogę powiedzieć, że zamierzam być tworzenie mutex po prostu użyć jako tego argumentu? Co powinien zrobić ten muteks?
Wszystkie funkcje wymienione w tym bloku są funkcjami bibliotecznymi. Jak mogę naprawić ten wyciek pamięci? Znajduje się w kategorii „ Nadal osiągalne ”. (Są jeszcze 4, które są bardzo podobne, ale o różnych rozmiarach) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: …
Cytując stronę podręcznika: Podczas korzystania ze zmiennych warunkowych zawsze istnieje predykat boolowski obejmujący zmienne współdzielone skojarzone z każdym warunkiem oczekiwania, który jest prawdą, jeśli wątek powinien kontynuować. Mogą wystąpić fałszywe wybudzenia z funkcji pthread_cond_timedwait () lub pthread_cond_wait (). Ponieważ powrót z pthread_cond_timedwait () lub pthread_cond_wait () nie implikuje nic o …
W różnych wielowątkowych projektach C i C ++ widziałem -pthreadflagę stosowaną zarówno na etapie kompilacji, jak i linkowania, podczas gdy inne w ogóle jej nie używają i po prostu przechodzą -lpthreaddo etapu łączenia. Czy istnieje niebezpieczeństwo niekompilowania i linkowania z -pthreadflagą - czyli co -pthreadwłaściwie robi? Interesują mnie przede wszystkim …
Instaluję mingw-w64 w systemie Windows i są dwie opcje: wątki win32 i wątki posix. Wiem, jaka jest różnica między wątkami win32 i pthreads, ale nie rozumiem, jaka jest różnica między tymi dwiema opcjami. Wątpię, czy jeśli wybiorę wątki posix, uniemożliwi to wywoływanie funkcji WinAPI, takich jak CreateThread. Wygląda na to, …
Muszę przekazać wiele argumentów do funkcji, którą chciałbym wywołać w osobnym wątku. Mam przeczytać , że typowy sposób, aby to zrobić, aby zdefiniować struct, zdać funkcję wskaźnika do tego, i wyłuskanie go do argumentów. Jednak nie mogę sprawić, żeby to zadziałało: #include <stdio.h> #include <pthread.h> struct arg_struct { int arg1; …
Zawsze się mylę. Czy ktoś mógłby wyjaśnić, co oznacza Reentrant w różnych kontekstach? I dlaczego miałbyś chcieć użyć ponownego wtajemniczenia vs. niewracającego? Powiedz prymitywy blokujące pthread (posix), czy są one ponownie wchodzące, czy nie? Jakich pułapek należy unikać podczas ich używania? Czy mutex powraca?
Czy jest jakaś różnica między pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; Lub pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); Czy jestem wystarczająco bezpieczny, jeśli używam tylko pierwszej metody? UWAGA: Moje pytanie dotyczy głównie bardzo małych programów, w których co najwyżej to, co zrobię, to podłączenie kilku klientów do serwera i rozwiązywanie ich zapytań …
Powiedzmy, że mam taką klasę jak class c { // ... void *print(void *){ cout << "Hello"; } } A potem mam wektor c vector<c> classes; pthread_t t1; classes.push_back(c()); classes.push_back(c()); Teraz chcę utworzyć wątek na c.print(); A oto poniższy problem: pthread_create(&t1, NULL, &c[0].print, NULL); Błąd Ouput: nie można przekonwertować 'void …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.