Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Semaphore vs Mutex [D7, NT4, Win2k, WinXP]


Страницы:   1 2

Shaman O Mega ©   (2003-10-29 16:01:00) 

Я пишу многопоточный многопользовательский сервер, при подключении клиента я создаю семафор с его именем и ip адрессом (в одном потоке ), затем когда пользователь выходит я пытаюсь уничтожить этот семафор (это уже другой поток, но того же процесса), однако у меня ничего не получается... С мьютексами та же проблема. :) помогите дураку


Shaman O Mega   (2003-10-30 08:36:00) [21]

NameMutex:=CreateMutex(NIL,False,PChar(AUserName));
if GetLastError=ERROR_ALREADY_EXISTS then
begin
AThread.Connection.WriteLn("one login - one connection");
AThread.Connection.Disconnect;
exit;
end;

if ReleaseMutex((AThread.Data as TUser).NameMutex) then

Вот код


Reindeer Moss Eater   (2003-10-30 08:34:00) [22]

Даже если разруливать подключения с одного адреса на уровне приложения, то все равно зачем мьютексы семафоры и прочее?
Что, серверу нельзя иметь структуру с информацией о уже подключенных пользователях и их IP ?


Digitman   (2003-10-30 08:27:00) [23]


> Shaman O Mega


ни семафор ни мьютекс не поможет в решении этой задачи.

для полноценного рижекта нежелательных кл.запросов на коннект на сервере для "слушающего" гнезда нужно задействовать механизм True Conditional Acceptance и механизм Quality Of Service (на обеих сторонах потенциального соединения)


MBo   (2003-10-30 08:25:00) [24]

приведи свой код, с которым не получается - наиболее важные куски


Shaman O Mega   (2003-10-30 08:11:00) [25]

Синхронизация как я уже написал нужна для того чтобы пользователь с одним логином или ip не зашёл два раза, ситуация довольно критична, проверка и создание семафора совмещены, таким образом я не попаду в ситуацию когда произошло два соединения с одного ip(с одним loginом) и оба поймали момент, когда они ещё не появились в списках и считают оба соединания первыми... и т.д. и т.п...

Товарищи, попрошу без иронии.

MBo что значит "код?"?


Polevi   (2003-10-29 21:11:00) [26]

"ничего не получается", как же, очень распространенная ошибка


Reindeer Moss Eater   (2003-10-29 16:38:00) [27]

Если сервер один (один процесс) то зачем мьютекс?

А вообще в чем должно состоять назначение объектов синхронизации для твоего сервера?


MBo   (2003-10-29 16:11:00) [28]

код?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо