Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
67 / 65 / 61
Регистрация: 11.11.2015
Сообщений: 392
1

Semaphore Wait(int millisecondsTimeout)

22.04.2017, 17:36. Показов 555. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Разбираюсь в многопоточном программировании.
Скажите пожалуйста, что именно означает этот таймаут? Что будет если ресурс не будет освобожден за это время? Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.04.2017, 17:36
Ответы с готовыми решениями:

Java.lang.IllegalMonitorStateException: object not locked by thread before wait() при вызове метода wait()
Здравствуйте! На этот раз, у меня проблема с вызовом метода wait() в новом фоновом потоке....

Какая из этих функций int Q(int w) int W(int y,int u,int i) сработает быстрее?
Если есть 2 функции(простые или перегруженные) к примеру Q(int w) int W(int y,int u,int i)или int...

Не работает перегрузка индексного оператора [], вместо [int][int] почему то нужно ставить [0][int][int]
#include<iostream> #include<string> #include<vector> #include<algorithm> #include<ctime>...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

7
138 / 138 / 53
Регистрация: 14.06.2016
Сообщений: 467
22.04.2017, 19:08 2
это значит, что доступ будет получен либо когда ресурс освбодится, либо по истечении таймаута.
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
26.04.2017, 22:49 3
jr_, не путайте человека.
По истечению таймаута Wait вернет false - означает, что доступ к ресурсу не получен.
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
27.04.2017, 10:21 4
Цитата Сообщение от nicolas2008 Посмотреть сообщение
не путайте человека.
jr_ все правильно сказал: доступ к критической зоне будет получен, но он будет не эксклюзивным.
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
27.04.2017, 11:53 5
kolorotur, что значит неэксклюзивный доступ?
Можете привести реальный пример, когда по таймауту есть смысл давать доступ к ресурсу?
0
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
27.04.2017, 13:31 6
Цитата Сообщение от nicolas2008 Посмотреть сообщение
что значит неэксклюзивный доступ?
По сути, несинхронизированный: если ожидание завершилось из-за таймаута, то нет гарантии того, что текущий поток единственный, использующий общий ресурс. Следовательно, дальнейшее использование общего ресурса — на свой страх и риск.

Цитата Сообщение от nicolas2008 Посмотреть сообщение
Можете привести реальный пример, когда по таймауту есть смысл давать доступ к ресурсу?
Может и есть какой-нибудь экзотический случай, но мне такие в практике пока что не попадались.
0
1144 / 853 / 262
Регистрация: 30.04.2009
Сообщений: 3,581
27.04.2017, 14:09 7
Цитата Сообщение от kolorotur Посмотреть сообщение
По сути, несинхронизированный: если ожидание завершилось из-за таймаута, то нет гарантии того, что текущий поток единственный, использующий общий ресурс. Следовательно, дальнейшее использование общего ресурса — на свой страх и риск.
Цитата Сообщение от kolorotur Посмотреть сообщение
Может и есть какой-нибудь экзотический случай, но мне такие в практике пока что не попадались.
Я тоже такого не встречал.
Обычно по истечению таймаута требуется обработать эту исключительную ситуацию не предоставляя доступа к ресурсу, например бросить исключение TimeoutException, или залогировать и попробовать еще раз.
Т.е. для отладки и повышения устойчивости системы в условиях риска возникновения dead lock-ов.
1
Эксперт .NET
17689 / 12874 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
27.04.2017, 14:16 8
Цитата Сообщение от nicolas2008 Посмотреть сообщение
Обычно по истечению таймаута требуется обработать эту исключительную ситуацию не предоставляя доступа к ресурсу, например бросить исключение TimeoutException, или залогировать и попробовать еще раз.
Т.е. для отладки и повышения устойчивости системы в условиях риска возникновения dead lock-ов.
Бесспорно.
Мое пояснение было только о том, что сам по себе таймаут мьютекса не предотвращает дальнейшего доступа к общему ресурсу, просто возвращаемое значение (false) указывает на то, что делать это небезопасно.
1
27.04.2017, 14:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.04.2017, 14:16
Помогаю со студенческими работами здесь

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int...

Semaphore
Прочитал мануал по семафору, разобрал простой пример с его применением. Но непонятно следующее...

void _fastcall TForm1::Vector(int x0, int y0, int a, int l);
//--------------------------------------------------------------------------- #include...

Dictionary<int,List<int>> и IReadOnlyDictionary<int,IReadOnlyList<int>>
Народ, столкнулся с такой ситуацией. Есть Переменная Dictionaty&lt;int,List&lt;int&gt;&gt; Dic = new...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru