LINUX.ORG.RU

потеря данных при блокировке главного потока


0

1

Прошу помощи! Дело такое: с помощью Qt пишу многопоточное приложение, где дочерние потоки осуществляют обработку, а GUI-поток отрисовывает результат обработки.

Сами данные и переменные для обработки и доступ к ним сделан как к экземпляру класса, который создается в главном потоке в куче. Данные это экземпляры различных классов, матрицы и т.п.

Также разделяемые данные защищены мьютексами.

Возможен ли такой случай, когда главный GUI-поток заблокировался в ожидании разблокировки мьютекса потоком обработки, и вследствии этого разделяемые данные тоже стали недоступны или же произошел сдвиг памяти, в рез-те чего поток обработки считал их не корректно?

если «произошел сдвиг памяти», то всё - абзац.

MKuznetsov ★★★★★
()

возможно, в этом мире, имеет большую вероятность, чем невозможно.

нарисуй потоки и операции с объектами синхронизации. затем посмотри на то, что может произойти. должны получится примерно такие картинки. (источник: Два простых правила для предотвращения взаимных блокировок на мьютексах)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.