Pytania otagowane jako pthreads

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).

14
Niezdefiniowane odniesienie do pthread_create w systemie Linux
Wybrałem następujące demo z Internetu z https://computing.llnl.gov/tutorials/pthreads/ #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: …





5
Wyciek wciąż osiągalny wykryty przez Valgrinda
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: …
154 c  pthreads  valgrind 

4
Dlaczego pthread_cond_wait ma fałszywe wybudzenia?
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 …
145 c  pthreads 

2
Znaczenie flagi -pthread podczas kompilacji
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 …
143 c++  c  linux  pthreads 

3
wątki mingw-w64: posix vs win32
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, …
130 windows  gcc  pthreads  mingw 


8
Wiele argumentów funkcji wywoływanej przez pthread_create ()?
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; …
96 c  pthreads 

4
Co to jest blokada ponownego wejścia i ogólnie koncepcja?
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?

4
PTHREAD_MUTEX_INITIALIZER kontra pthread_mutex_init (& mutex, param)
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ń …
91 c  ubuntu  pthreads  mutex 


9
pthread z klasy
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 …
86 c++  pthreads 

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.