Semaphores in .NET
От: Mr.Smith  
Дата: 05.01.05 13:18
Оценка:
Добрый день, многоуважаемый All!

Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем? Семафоры есть практически во всех операционных системах, но почему-то в .NET его нет. Говорят, что и в Java его тоже нет. Вопрос: почему? Если есть линк на обсуждения/разъяснения этой темы, буду благодарен!
Semaphores in .NET
От: Аноним  
Дата: 05.01.05 13:29
Оценка:
Видимо просто не успели сделать, пример реализации под .NET есть здесь.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Semaphores in .NET
От: dshe  
Дата: 05.01.05 13:30
Оценка:
Здравствуйте, Mr.Smith, Вы писали:

MS>Добрый день, многоуважаемый All!


MS>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем? Семафоры есть практически во всех операционных системах, но почему-то в .NET его нет. Говорят, что и в Java его тоже нет. Вопрос: почему? Если есть линк на обсуждения/разъяснения этой темы, буду благодарен!


Могу сказать про Java: потому что монитор прекрасно справляется с теми задачами, для которых семафор предназначен.
--
Дмитро
Re: Semaphores in .NET
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 13:43
Оценка: +1
Здравствуйте, Mr.Smith, Вы писали:

MS>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем?


Как то на практике потребности в семафоре ни разу не возникало. Вот отсутсвие именованных эвентов напрягает.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re[2]: Semaphores in .NET
От: Аноним  
Дата: 05.01.05 19:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Mr.Smith, Вы писали:


MS>>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем?


AVK>Как то на практике потребности в семафоре ни разу не возникало. Вот отсутсвие именованных эвентов напрягает.


А не могли бы Вы поведать, что такое семафоры и именованные события. Первый раз слышу и очень интересно.
Re[3]: Semaphores in .NET
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.01.05 20:12
Оценка: :)
Здравствуйте, <Аноним>, Вы писали:

AVK>>Как то на практике потребности в семафоре ни разу не возникало. Вот отсутсвие именованных эвентов напрягает.


А>А не могли бы Вы поведать, что такое семафоры и именованные события. Первый раз слышу и очень интересно.


Именованное событие это очень просто — это событие с именем . Наличие имени дает возможность открывать такое событие из разных процессов. Для мьютексов подобная фича есть (см. конструкторы с параметром типа string), а вот для эвентов почему то нет.
Что же касается семафоров, то это такой мьютекс, у которого есть счетчик. Т.е. если мьютексом может владеть один поток, то семафором некоторое заранее определенное количество.
... << RSDN@Home 1.1.4 beta 3 rev. 272>>
AVK Blog
Re: Semaphores in .NET
От: FractalizeR  
Дата: 06.01.05 10:31
Оценка: -1
Здравствуйте, Mr.Smith, Вы писали:

MS>Добрый день, многоуважаемый All!


MS>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем? Семафоры есть практически во всех операционных системах, но почему-то в .NET его нет. Говорят, что и в Java его тоже нет. Вопрос: почему? Если есть линк на обсуждения/разъяснения этой темы, буду благодарен!


Я так понимаю, класс System.Threading.ThreadPool призван обеспечить часть возможностей семафоров.
Re: Semaphores in .NET
От: Аноним  
Дата: 06.01.05 23:09
Оценка:
>Я так понимаю, класс System.Threading.ThreadPool призван обеспечить часть возможностей семафоров.

Как именно?


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re: Semaphores in .NET
От: PetrovichForever Россия  
Дата: 21.11.05 21:33
Оценка: 6 (1) :)
Здравствуйте, Mr.Smith, Вы писали:

MS>Добрый день, многоуважаемый All!


MS>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем? Семафоры есть практически во всех операционных системах, но почему-то в .NET его нет. Говорят, что и в Java его тоже нет. Вопрос: почему? Если есть линк на обсуждения/разъяснения этой темы, буду благодарен!



В .NET 2.0 этот клас наконец появился. Видать доделали ...
System.Threading.Semaphore
Re[2]: Semaphores in .NET
От: Andrbig  
Дата: 22.11.05 07:42
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Mr.Smith, Вы писали:


MS>>Есть вопрос: почему в .NET не реализован класс Semaphore, инкапсулирующий одноименный объект синхронизации операционных систем?


AVK>Как то на практике потребности в семафоре ни разу не возникало. Вот отсутсвие именованных эвентов напрягает.


Имхо, имени нет потому что с ними много мороки:

Terminal Services: The name can have a "Global\" or "Local\" prefix to explicitly create the object in the global or session name space. The remainder of the name can contain any character except the backslash character (\). For more information, see Kernel Object Namespaces.
Windows XP Home Edition: Fast user switching is implemented using Terminal Services sessions. The first user to log on uses session 0, the next user to log on uses session 1, and so on. Kernel object names must follow the guidelines outlined for Terminal Services so that applications can support multiple users.
Windows 2000: If Terminal Services is not running, the "Global\" and "Local\" prefixes are ignored. The remainder of the name can contain any character except the backslash character.
Windows NT 4.0 and earlier: The name can contain any character except the backslash character.
Windows Me/98/95: The name can contain any character except the backslash character. The empty string ("") is a valid object name.


Что ни ОС, то свои особенности. .net сделан как средство избавления от подобных приколов, так что решение не именовать вполне логично.
Re[3]: Semaphores in .NET
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.12.05 14:59
Оценка: +2
Здравствуйте, Andrbig, Вы писали:

A>Что ни ОС, то свои особенности. .net сделан как средство избавления от подобных приколов, так что решение не именовать вполне логично.


Интересно, почему тогда есть именованный мьютекс?
... << RSDN@Home 1.2.0 alpha rev. 620 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[4]: Semaphores in .NET
От: Andrbig  
Дата: 05.12.05 06:41
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Интересно, почему тогда есть именованный мьютекс?


Согласен, нелогично. Увы, архитектура .net далека от совершенства — тут сделали, там нет... Полагаю, самому MS понадобился именованный мьютекс, вот они его и сделали, наплевав на остальное.
Re[4]: Semaphores in .NET
От: eugen1001  
Дата: 05.12.05 08:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, <Аноним>, Вы писали:


AVK>>>Как то на практике потребности в семафоре ни разу не возникало. Вот отсутсвие именованных эвентов напрягает.


А>>А не могли бы Вы поведать, что такое семафоры и именованные события. Первый раз слышу и очень интересно.


AVK>Именованное событие это очень просто — это событие с именем . Наличие имени дает возможность открывать такое событие из разных процессов. Для мьютексов подобная фича есть (см. конструкторы с параметром типа string), а вот для эвентов почему то нет.

AVK>Что же касается семафоров, то это такой мьютекс, у которого есть счетчик. Т.е. если мьютексом может владеть один поток, то семафором некоторое заранее определенное количество.

Боюсь ты заблуждаешься. Разница принципиальная: мьютекс может освободить только поток, который захватил мьютекс, а семафор — кто угодно

А во втором framework семафор появился , а вот события по-прежнему не именованные
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Semaphores in .NET
От: eugen1001  
Дата: 05.12.05 08:49
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Andrbig, Вы писали:


A>>Что ни ОС, то свои особенности. .net сделан как средство избавления от подобных приколов, так что решение не именовать вполне логично.


AVK>Интересно, почему тогда есть именованный мьютекс?


Новый семафор тоже именованный
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Semaphores in .NET
От: _FRED_ Черногория
Дата: 05.12.05 15:32
Оценка: +1
Здравствуйте, eugen1001, Вы писали:

E>… а вот события по-прежнему не именованные


public EventWaitHandle (
    bool initialState,
    EventResetMode mode,
    string name
)

здесь
<< RSDN@Home 1.2.0 alpha rev. 616 >> =06:32= [Windows 2003 — 5.2.3790.65536]
under «*none*»
Help will always be given at Hogwarts to those who ask for it.
Re[6]: Semaphores in .NET
От: eugen1001  
Дата: 06.12.05 11:03
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Здравствуйте, eugen1001, Вы писали:


E>>… а вот события по-прежнему не именованные


_FR>
_FR>public EventWaitHandle (
_FR>    bool initialState,
_FR>    EventResetMode mode,
_FR>    string name
_FR>)
_FR>

_FR>здесь

Ясно, спасибо, сюда не посмотрел.
А вот в AutoResetEvent и в ManualResetEvent конструкторы не перегрузили , это меня и смутило.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Semaphores in .NET
От: Аноним  
Дата: 05.12.05 12:41
Оценка:
Небольшой семафор можно собрать из массива
mutex-ов нужного размера и метода WaitAny()
у такой реализации есть преимущество — если процесс умирает,
то все захваченные им mutex освобождаются, чего не случается с приведенным выше примером реализации семафора на основе winapi
shura


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.