#define SIZE 3
#define MAX_THREADS 9
int main() {
...
pthread_t m_threads[MAX_THREADS];
int t_num = 0;
for (int i = 0; i < SIZE; ++i) {
for (int j = 0; j < SIZE; ++j) {
...
pthread_create(&m_threads[i], NULL, multiply, (void *) &td[t_num]);
t_num++;
}
}
for( int i = 0; i < MAX_THREADS; i++ ) {
pthread_join(m_threads[i], NULL);
}
return 0;
}
Я создаю 9 потоков для умножения матриц. Расчеты успешны. Но программа вылетает, когда я пытаюсь присоединиться к потокам. Сбой программы при выполнении pthread_join(m_threads[i], NULL)
во время 4-й итерации for-l oop.
Отладка программы Я получаю эту ошибку сегментации из GDB.
Thread 1 "Pthread" received signal SIGSEGV, Segmentation fault.
0x00007f7d0063ac9f in __free_tcb () from /lib/x86_64-linux-gnu/libpthread.so.0
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.