Bonjour,
je reprends un de mes vieux codes qui me donne pas satisfaction niveau design. J'ai 1..N Threads qui se partagent une connexion TcpClient. L'accès est exclusif, et j'essaie de prioriser les demandes d'écritures avant les demandes d'interrogations.
Dans mon ancien design, chaque thread qui était en charge d'une action (lecture ou écriture, les lectures sont périodiques, les écritures ponctuelles) s'inscrivait dans une file, puis testait régulièrement si c'était son tour, faisait son office quand il avait la main puis faisait un sleep pour marquer une période d'interrogation...
J'aimerais rendre l'accès plus dynamique. Je pensais utiliser les AutoResetEvent, que tous les threads soient en Wait et que celui qui ait fini de taffer fasse un Set, mais :
* Comment gérer si j'ai un seul Thread ? AutoresetEvent tombe à l'eau alors, car personne ne pourra réveiller le thread
* Comment gérer si le thread qui finit son taff fait le Set alors que les autres dorment et n'ont pas encore fait un Wait pour marquer leur désir de nouveau utiliser le TcpClient ?
AutoResetEvent me semblait alléchant mais semble poser d'autres soucis de design. Si possible j'aimerais ne pas reposer sur des lock.
Partager