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 |
|
| |