Запитання з тегом «pthreads»

Pthreads (POSIX Threads) - це стандартизований API на основі С для створення та обробки потоків. На даний момент він визначений POSIX.1-2008 (IEEE Std 1003.1, 2013 Edition / The Open Group Base Specifications Issue 7).

14
Невизначена посилання на pthread_create в Linux
Я взяв таку демонстраційну версію в Інтернеті з 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++){ …


3
cmake і libpthread
Я бігаю RHEL 5.1і використовую gcc. Як я можу cmakeдодати -pthreadдо компіляції та зв’язування?
188 pthreads  cmake 

10
Чому для змінних функцій pthreads потрібна mutex?
Я читаю далі pthread.h; функції, пов'язані зі змінною умови (як pthread_cond_wait(3)), потребують mutex як аргумент. Чому? Наскільки я можу сказати, я буду створювати мютекс просто для використання в якості аргументу? Що це мутекс?


5
Досі доступний витік виявлений Valgrind
Усі функції, згадані в цьому блоці, - це функції бібліотеки. Як я можу виправити цей витік пам'яті? Він перерахований під категорією " Ще доступний ". (Є ще 4, які дуже схожі, але різної величини) 630 bytes in 1 blocks are still reachable in loss record 5 of 5 at 0x4004F1B: …
155 c  pthreads  valgrind 

4
Чому pthread_cond_wait має помилкові пробудження?
Щоб процитувати сторінку людини: При використанні змінних умов завжди є булевий предикат, що включає спільні змінні, пов'язані з кожною умовою очікування, що є істинним, якщо потік повинен продовжуватися. Можуть виникати помилкові пробудження функцій pthread_cond_timedwait () або pthread_cond_wait (). Оскільки повернення з pthread_cond_timedwait () або pthread_cond_wait () нічого не означає про …
145 c  pthreads 

2
Значення прапорця -низу при компілюванні
У різних багатопотокових проектах C і C ++ я бачив -pthread прапор застосовується як до етапу компіляції, так і для зв'язування, а інші взагалі не використовують його і просто переходять -lpthreadна етап зв’язку. Чи є якась небезпека не скласти та зв’язати -pthreadпрапор - тобто що -pthreadнасправді робить? Мене насамперед цікавлять …
143 c++  c  linux  pthreads 

3
mingw-w64 теми: posix vs win32
Я встановлюю mingw-w64 у Windows, і є два варіанти: win32 потоки та потокові потоки. Я знаю, у чому різниця між win32 потоками та pthreads, але я не розумію, у чому різниця між цими двома варіантами. Я сумніваюся, що якщо я виберу потокові позиції, це не дозволить мені викликати такі функції …
128 windows  gcc  pthreads  mingw 


8
Кілька аргументів функції, викликаних pthread_create ()?
Мені потрібно передати кілька аргументів функції, яку я хотів би викликати в окремому потоці. Я читав, що типовим способом зробити це є визначення структури, передача функції вказівника на неї та розмежування її для аргументів. Однак я не можу змусити це працювати: #include <stdio.h> #include <pthread.h> struct arg_struct { int arg1; …
93 c  pthreads 

4
Що таке замок та концепція повторного вступу взагалі?
Я завжди плутаюся. Хтось пояснить, що означає " реентрант" у різних контекстах? І чому ви хочете використовувати реентерабельного та нереагентного? Скажіть примітиви блокування pthread (posix), вони знову вступають чи ні? Яких підводних каменів слід уникати при їх використанні? Мутекс знову входить?

4
PTHREAD_MUTEX_INITIALIZER проти pthread_mutex_init (& mutex, param)
Чи є якась різниця між pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER; Або pthread_mutex_t lock; pthread_mutex_init ( &lock, NULL); Чи достатньо я безпечний, якщо використовую лише перший метод? ПРИМІТКА. Моє запитання здебільшого стосується дуже маленьких програм, де щонайбільше я буду підключати декілька клієнтів до сервера та вирішувати їх запити за допомогою робочих потоків.
90 c  ubuntu  pthreads  mutex 


9
функція pthread з класу
Скажімо, у мене є такий клас, як class c { // ... void *print(void *){ cout << "Hello"; } } І тоді я маю вектор c vector<c> classes; pthread_t t1; classes.push_back(c()); classes.push_back(c()); Тепер я хочу створити ланцюжок c.print(); І наступне задає мені проблему нижче: pthread_create(&t1, NULL, &c[0].print, NULL); Вихід помилки: …
86 c++  pthreads 

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.