Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Подскажите алгоритм синхронизации потоков (https://forum.antichat.xyz/showthread.php?t=152496)

_nic 30.10.2009 22:23

Подскажите алгоритм синхронизации потоков
 
Схема выглядит примерно так
Код:

SOCKET s;
for(;;)
{
recv(прием данных);
switch(обработка принятых данных)
{
case A://старт потока 1
case B://старт потока 2
case C://старт потока 3
................
case X:...........................
}
.............
}

В потоки передается сокет из родительского потока,и в них происходит полноценный обменн данными через этот сокет, т.е. как минимум по одному send,recv.Вопрос в том как правильнее это все дело в дочерних потоках синхронизировать с recv в родительском :confused: Что бы данные одного потока не были приняты в другом и recv в мейн потоке не фризил работу с сокетами в дочерних.

Algol 30.10.2009 22:37

А у тебя что, один сокет на несколько клиентов ?
Как так может быть ?
Сколько клиентов, столько и сокетов должно быть.

Gar|k 30.10.2009 23:28

event-ы, симафоры, мутексы... если про windows говоришь. Асинхронная передача с событиями...

razb 31.10.2009 12:43

Цитата:

симафоры, мутексы... если про windows говоришь.
а еще и условные переменные, и все это так же применимо под *nix системами )

Fata1ex 31.10.2009 14:44

я писал статью про многопоточность. почитай - возможно, поможет

Jes 31.10.2009 15:37

у Рихтера в книге целый раздел по синхронизации был а так же про TLS (локальная память потока)


Время: 17:47