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

UptoLike

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

236
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;
arg->z = z;
arg->x = S[i][z];
// создание потока для вычислений
pthread_create (&thread, NULL, calc_thr, (void *)arg);
// перевод потока в отсоединенный режим
pthread_detach(thread);
// for (int z=0; z<SIZE_J; z++)