TIdTCPClient - WirteStream simultáneo?
Hola
Quería hacer una pregunta -quizá obvia- sobre TIdTCPClient.WirteStream. Tengo lo siguiente: Por una parte cada segundo escribo un comando constante, y por otra parte a petición de la aplicación escribo otros. Si se produce una escritura simultánea desde el evento OnTimer y desde el procedimiento el TIdTCPClient lo resolvería, o bien debo gestionarlo / impedirlo desde la aplicación. Uso Delphi 7 / Indy 9 Muchas gracias de antemano. |
Depende:
-Si existe un solo componente para manejar todas las operaciones y solamente interviene un hilo de ejecución. -Si existe un solo componente para manejar todas las operaciones e intervienen varios hilos de ejecución. -Si existe un componente determinado y diferenciado para cada hilo de ejecución. En el primer y tercer caso no necesitarías manejar la concurrencia. En el segundo caso si deberías manejar la concurrencia. Si no te queda claro adelante, vuelve a preguntar. |
Muchas gracias por la respuesta.
Los procesos de escritura se realizan con un solo componente y en el hilo principal (1º caso) , pero -simpre lo hay- tengo un hilo que usa el mismo componente para realizar lecturas (Cliente.ReadStream(...) ).
¿Podría haber problemas de concurrencia entre los procesos Cliente.WriteStream() del hilo principal y los procesos Cliente.ReadStream(...) del segundo hilo? |
Cita:
WriteStream o ReadStream, son funciones que requieren bastante tiempo. Al estar ejecutándose en hilos diferentes puede que se ejecuten simultáneamente, lo que podría provocar una serie de errores (que se mezclasen los datos o vete tú a saber, desconozco el funcionamiento interno de estos componentes indy, tal vez usen un mismo buffer para ambas funciones). Lo correcto es que cuando termine una función, dé señal al otro hilo para utilizar la otra función y/o viceversa. Espero haberte ayudado. Un saludo. |
Muchas gracias.
Echaremos mano de un mutex. |
La franja horaria es GMT +2. Ahora son las 19:28:05. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi