Операционные системы. Замятин А.В - 74 стр.

UptoLike

Составители: 

74
DATA* a = (DATA*) arg;
printf("S[%d][%d]:", a->i, a->z);
scanf("%f", &S[a->i][a->z]);
delete a;
return NULL;
}
int main() {
//массив идентификаторов потоков
pthread_t thr[ SIZE_I * SIZE_J ];
// инициализация мьютекса
pthread_mutex_init(&lock, NULL);
DATA *arg;
// Ввод данных для обработки
for (int i=0;i<SIZE_I; i++) {
for (int z=0; z<SIZE_J; z++) {
arg = new DATA;
arg->i = i;
arg->z = z;
// создание потока для ввода элементов матрицы
pthread_create (&thr[ i* SIZE_J + z ], NULL, input_thr, (void *)arg);
} // for (int z=0; z<SIZE_J; P ++z)
} // for (int i=0;i<SIZE_I; P ++i)
// Ожидание завершения всех потоков ввода данных
// идентификаторы потоков хранятся в массиве thr
for(int i = 0; i < SIZE_I*SIZE_J; i++) pthread_join (thr[i], NULL);
// Вычисление элементов матрицы
pthread_t thread;
printf("Start calculation\n");
for (int i=0;i<SIZE_I; i++) {
for (int z=0; z<SIZE_J; z++) {
arg = new DATA;
arg->i = i;