Articles of pthreads

Как убить stream управления с помощью C?

У меня есть следующий код. приложение построения – это myprogram. Если я запустил myprogram, а затем killall myprogram, и сразу после этого я снова запускаю myprogram, а затем запускает myprogram. причина сбоя связана с тем, что stream управления, созданный первым запуском, должным образом не очищается до второго запуска. так что во втором запуске, когда myprogram […]

Синхронизация доступа к двусвязному списку

Я пытаюсь реализовать (C ++) дважды связанный список в C, в среде pthreads, но используя только C-wrapped инструкции синхронизации, такие как атомный CAS и т. Д., А не примитивы pthread. (Элементы списка являются фиксированными частями памяти и почти наверняка не могут соответствовать pthread_mutex_t и т. Д. Внутри них.) Мне не нужны полные произвольные методы с […]

c массив сквозной передачи типа int

Я передаю массив типа int pthread_create и получив ошибку: histogram.c:138:3: warning: passing argument 3 of ‘pthread_create’ from incompatible pointer type [enabled by default] expected ‘void * (*)(void *)’ but argument is of type ‘void * (*)(int *)’ void *output_results(); pthread_create(&t2, NULL, output_results, (void *)bins); void *output_results(int *bins) { some code }

Сон в streamе (streamи C / POSIX)

Я разрабатываю многопоточное приложение, которое использует streamи POSIX . Я использую streamи для выполнения периодической работы, и для этой цели я использую usleep (3) для приостановки выполнения streamа. Мой вопрос в том, как я могу отменить таймер usleep () из основного streamа, я попробовал pthread_kill(thread, SIGALRM) но он имеет глобальный эффект, который приводит к прекращению […]

GCC – Как перестроить стек?

Я пытаюсь создать приложение, которое использует pthreads и тип SSE __m128. Согласно руководству GCC, выравнивание по умолчанию по умолчанию составляет 16 байт. Для использования __m128 требуется 16-байтовое выравнивание. Мой целевой процессор поддерживает SSE. Я использую компилятор GCC, который не поддерживает переустановку стека во время выполнения (например, -mstackrealign). Я не могу использовать другую версию компилятора GCC. […]

Связь между двумя streamами в pthread

Я создаю два streamа thread1 и thread2. Thread1 считывает аналоговое значение, а thread2 обрабатывает аналоговое значение, которое считывается в thread1, и задает аргументы PWM. то, что я делал до сих пор, в основном файле (где я создаю streamи), я объявил глобальную переменную (для сохранения аналогового значения) и передал указатель на глобальную переменную на оба streamа. […]

Параллельное приложение имеет случайное поведение

Я пишу программу C, используя pthreads, чтобы выполнить вычисление шаблона волнового фронта на двумерной матрице. Для достижения хорошей производительности я распределяю несколько строк на каждый stream чередующимся образом, например: stream 0 —————— thread 1 —————— stream 2 —————— Тема 3 —————— stream 0 —————— thread 1 —————— stream 2 —————— Тема 3 —————— и т.п. […]

Утечка памяти pthread в программировании на C

У меня есть код ниже. void *timer1_function(void * eit); pthread_t timer1; int thread_check1 = 0; line72: thread_check1 = pthread_create( &timer1, NULL, timer1_function, NULL); Valgrind показывает результат ниже и говорит, что в line 72 есть проблема. что не так с использованием pthread_create выше? 272 bytes in 1 blocks are possibly lost in loss record 2 of […]

Могу ли я остановить (приостановить) выполнение pthread с помощью pthread_kill

Будет ли stream остановлен, если я отправлю сигнал SIGTSTP? Или, другими словами, он будет вести себя как процесс на SIGTSTP и SIGCONT? Заранее спасибо.

В многопоточном приложении, как я могу перенаправить stderr & stdout в отдельный файл в соответствии с streamом?

У меня есть приложение с несколькими streamами, в котором я создаю такой stream: int main(int argc,char *argv[]) { pthread_t thread_id[argc-1]; int i; struct parameter thread_data[argc-1]; int status; for(i=0;i<argc-1;i++) { thread_data[i].ip_filename = argv[i+1]; strcpy (thread_data[i].op_filename,argv[i+1]); strcat (thread_data[i].op_filename,".h264"); } for(i=0;i<argc-1;i++) { pthread_create (&thread_id[i], NULL , &thread_function, &thread_data[i]); } } Теперь в функции streamа я хочу перенаправить stderr […]