Понедельник, 25 Ноября 2024, 11:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Нити и семафоры нитей (LINUX)
RamilyanamanaДата: Среда, 17 Мая 2017, 14:25 | Сообщение # 1
Биззи Джей Ужасный
Сейчас нет на сайте
Добрый вечер! Вот уже несколько недель я бьюсь над одной проблемой: дал нам препод лабы, грит разбирайтесь. Лабы эти относятся к процессам, семафорам, каналам и другой ерунде в Linux'е. Все шло хорошо до последней лабы "Нити и семафоры нитей". После написания кода, выяснилось, что функция pthread_mutex_lock(&mutex) вгоняет программу в депрессию и она зависает, методом тыка было выяснено, что функция pthread_mutex_trylock(&mutex) выводит программу из депрессии, но вот в чем дело: судя по описанию функции ***_lock,
Цитата
При невозмодности захватить семафор функция pthread_mutex_lock переводит вызвавшую ее нить в ожидание
, то есть программа не зависает, а находится в режиме ожидания. Теперь обратимся к функции ***_trylock -
Цитата
вызвавшую ее нить в ожидание, а функция pthread_mutex_trylock завершается немедленно с признаком ошибки
, то есть получается, что ничего не получается, trylock должен вернуть ненулевое значение, но как показал дебаг возвращается именно ноль, при том, что ***_lock уходит в ожидание.
В общем прикладываю сохраненные страницы сайта, которые нам дал препод, чтоб мы сами разбирались.
Самому преподу, кажется, лень выяснять, почему ничего не работает.
Так же был проверен пример лабораторной, по которому, в общем-то, и писалась собственная лаба. И этот пример тоже не рабочий.
В самой папке нужно открыть файл index и выбрать последнюю лабораторную, где в конце будет ссылка на пример.
Если кто-то из присутствующих лучше понимает в этой теме, знает, что с этими нитями не так, прошу, помогите пожалуйста.

архив с сайтом: тык





Сообщение отредактировал Ramilyanamana - Среда, 17 Мая 2017, 14:29
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг