![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Semaphore vs Mutex [D7, NT4, Win2k, WinXP]
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]
код?