Я не знаю, является ли это причиной вашей проблемы, но:
pthread_create(&p[j],NULL,mult_thread,&j);
определенно сломан. Вы передаете адрес j &j
. Таким образом, каждый поток получит случайное значение 0 <= initial_row <= 9, когда он действительно запускается. Вероятно, лучше просто передать <code>(void*)j и вывести его с (int)j
.
Вы также никогда не инициализируете res_mat
, но IIRC все равно будет инициализирован.
EDIT:
Причина, по которой значение starting_row
является случайным, заключается в том, что j
проходит через все числа от 0 до 9 между запускаемым потоком и соединением.
Таким образом, поток будет запущен в некоторой случайной точке между этими двумя и получит значение j
в этой точке.