Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Работа с сокетом в нескольких потоках  [new]
cptngrb
Member

Откуда:
Сообщений: 558
Есть сокет, который открывается, закрывается, и получает данные в одном потоке, а периодически заполненность буфера проверяется в другом. Могут ли быть проблемы с памятью?

SOCKET_RECV : TSocket;


проверка буфера (2й поток)
IOCtlSocket(SOCKET_RECV, FIONREAD, Arg)


основная работа (1й поток)
while not Terminated do
...
 recv(SOCKET_RECV, buff, SizeOf(buff) ,0);
...


Может в крит. секции обернуть?
18 май 20, 20:14    [22135288]     Ответить | Цитировать Сообщить модератору
 Re: Работа с сокетом в нескольких потоках  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50033

cptngrb
Может в крит. секции обернуть?

Не надо. Зачем тебе вообще эта проверка?

Posted via ActualForum NNTP Server 1.5

18 май 20, 22:06    [22135365]     Ответить | Цитировать Сообщить модератору
 Re: Работа с сокетом в нескольких потоках  [new]
cptngrb
Member

Откуда:
Сообщений: 558
Dimitry Sibiryakov,
проверяю, успеваю ли я вычитывать из буфера
18 май 20, 22:58    [22135387]     Ответить | Цитировать Сообщить модератору
 Re: Работа с сокетом в нескольких потоках  [new]
AWSVladimir
Member

Откуда:
Сообщений: 879
Если только чтение, ничего не будет.
22 май 20, 00:11    [22137400]     Ответить | Цитировать Сообщить модератору
 Re: Работа с сокетом в нескольких потоках  [new]
Vlad F
Member

Откуда:
Сообщений: 1281
cptngrb,

Сделай третий поток супервизора и пусть первые два посылают ему сообщения для принятия соответствующих решений.))
22 май 20, 00:31    [22137411]     Ответить | Цитировать Сообщить модератору
 Re: Работа с сокетом в нескольких потоках  [new]
northener
Member

Откуда: Москва
Сообщений: 75
Vlad F
cptngrb,
Сделай третий поток супервизора и пусть первые два посылают ему сообщения для принятия соответствующих решений.))


Потом сделай четвертый поток суперпупер визора, чтобы он контролировал три первых. Потом ...

P.S. И с каждым годом все больше и больше забывается, что изначальная аппаратная реализация всех подобных протоколов последовательной передачи данных имела (да и до сих пор имеет) встроенные механизмы для асинхронной работы. Аппаратные прерывания/события (Events) ОС. Но разбираться в этом большинству лень. Гораздо проще плодить потоки, благо примеров потоков на помойке легион.
P.P.S. Хотя если бы папаша Борланд в своё время нашел бы взаимоприемлемое решение вместе с Fransois Piette, может мы бы и не страдали ерундой.
22 май 20, 03:18    [22137424]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить