|
1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 11
|
||||||
pthread_mutex_trylock()21.12.2013, 08:21. Показов 4308. Ответов 10
Метки нет (Все метки)
Здравствуйте. Помогите, пожалуйста, решить головоломку. Есть задача:
Напишите функцию, удовлетворяющую следующим условиям: 1) Прототип функции: int lab_pthread_mutex_trylock(pthread_mutex_ t *mutex); 2) Входной параметр - адрес мьютекса 3) Возвращаемые значения: 0 , если мьютекс может быть захвачен без блокировки потока, 1 , если попытка захвата мьютекса с помощью функции pthread_mutex_lock() приведет к блокировке вызывающего ее потока -1 в случае любой ошибки При реализации функции разрешается использовать стандартные структуры и функции библиотек ОС LINUX за исключением функции pthread_mutex_trylock(); И вторая задача: Напишите функцию, удовлетворяющую следующим условиям: 1) Прототип функции: int lab_pthread_cond_timedwait(pthread_cond_ t *cond, pthread_mutex_t *mutex, unsigned int timetowait); 2) Входные параметры: адрес условной переменной, адрес мьютекса, количество миллисекунд, устанавливаемое для ожидания условной переменной 3) Возвращаемые значения: 0 в случае успешного выполнения функции; 1 , если время ожидания условной переменной превысило заданное в параметре timetowait количество миллисекунд -1 в случае любой ошибки. Я находил на форуме похожую тему годовалой давности, но там парень сам разобрался, не рассказав, как он это сделал... Я пытался через условие это сделать, но естественно, не получилось. Примерно это выглядело так:
Я читал pthread.h, но не нашел никакой функции, которая бы просто проверяла состояние мьютекса. Помогите, пожалуйста.
0
|
||||||
|
1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 11
|
||||||
| 24.12.2013, 05:27 [ТС] | ||||||
|
Up...?
Добавлено через 1 час 31 минуту Вот такой код получился. Но переменная ret почему-то принимает неверные значения. Что я не учел, что сделал не так? Кликните здесь для просмотра всего текста
Добавлено через 7 минут Разобрался. 71-я строчка лишняя. Анлок мьютекса без его лока=) Добавлено через 14 часов 55 минут Но как быть со второй функцией? Никто не жаждет помочь?=)
1
|
||||||
|
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
|
|
| 12.01.2014, 13:55 | |
|
удалось написать вторую функцию?
0
|
|
|
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
|
||||||
| 16.01.2014, 18:19 | ||||||
0
|
||||||
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 16.01.2014, 18:23 | |
|
танкист34, спасибо. Все равно неправильно)
0
|
|
|
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
|
|
| 16.01.2014, 18:28 | |
|
0
|
|
|
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
| 16.01.2014, 18:33 | |
|
танкист34, сам подход.
Если я правильно понимаю специфику конкретного учебного заведения, где дают такие задания, то преподаватель предполагает, что студенты зароются в исходники glibc и будут использовать аналогичные низкоуровневые механизмы для своей реализации. Конкретно под капотом pthread_cond_timedwait лежит системный вызов futex, который как раз умеет ждать изменения значения. В приведенном же примере создается дополнительный поток со sleep. Порождение лишних потоков по идее вообще неприемлемо. Хотя бы с точки зрения здравого смысла. И опережая вопрос - как это сделать правильно и чтобы работало. Понятия не имею.
0
|
|
|
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
|
|
| 16.01.2014, 18:40 | |
|
0
|
|
|
1 / 1 / 0
Регистрация: 03.12.2012
Сообщений: 11
|
||
| 17.01.2014, 02:05 [ТС] | ||
0
|
||
|
-23 / 0 / 2
Регистрация: 15.03.2013
Сообщений: 328
|
|
| 17.01.2014, 09:22 | |
|
не приняли, неправильный код под корень
0
|
|
|
Новые блоги и статьи
|
||||
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга,
Ты же видел моря и метели.
Как сменялись короны и стяги,
Как эпохи стрелою летели.
- Этот мир — это крылья и горы,
Снег и пламя, любовь и тревоги,
И бескрайние. . .
|
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1
У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\
А в самом низу файла-профиля. . .
|