Найдите ошибку в следующем фрагменте программы:int - Ответ на вопрос по ППсOpenMP №1239442
-42%
Вопрос
Найдите ошибку в следующем фрагменте программы:int x=0;omp_lock_t lcka, lckb;omp_init_lock (&lcka);omp_init_lock (&lckb);#pragma omp parallel{ int iam=omp_get_thread_num(); if (iam ==0) { omp_set_lock (&lcka); omp_set_lock (&lckb); x = x + 1; omp_unset_lock (&lckb); omp_unset_lock (&lcka); } else { omp_set_lock (&lckb); omp_set_lock (&lcka); x = x + 2; omp_unset_lock (&lcka); omp_unset_lock (&lckb); } }}omp_destroy_lock (&lcka);omp_destroy_lock (&lckb);- дедлок - взаимная блокировка нитей, возникающая, в случае если master-нить, выполнила omp_set_lock (&lcka), а другая нить выполнила omp_set_lock (&lckb)
- в данном фрагменте программы ошибки нет
- после установки блокировки в результате вызова функции omp_set_lock(&lcka), повторное обращение нитью к функции omp_set_lock(&lckb) некорректно (повторное обращение omp_set_lock(&lckb) должно быть заменено на omp_set_nest_lock(&lckb))
Ответ
Этот вопрос в коллекциях
-20%
Коллекция: Параллельное программирование с OpenMP
490 390 руб.

🎓 Поможем сдать всё — тесты, практику, экзамены, курсовые, дипломы, отчёты! Закроем долги под ключ 🔑 Ведём от первой сессии до диплома 🏆 Работаем с Синергией, МЭИ и другими вузами 🤝 Гарантия результата или возврат денег 💰 Пиши! 🚀















