Bonjour a tous
J'ai une question concernant les opérations multi threads avec lock sur fichier.
J'ai une application web qui effectue des opérations sur des fichiers, pour faire simple.
Par exemple, admettons 3 clients qui se loggent sur mon application.
Client A,B et C
Sur mon application j'ai une liste de liens, chaque lien effectue un traitement sur des fichiers Lecture/Écriture. 1 lien = diffèrent fichiers.
Mon problème : si A,B,C cliquent sur le même lien en même temps, j'ai 3 threads qui lisent/écrivent les mêmes fichiers donc problème.
J’étais parti dans l’idée d'utiliser la synchronisation donc cela fonctionner mais cette solution ne me convient pas car les traitements sont long et si un client clic sur un autre lien, donc autre fichiers, il sera bloque alors que personne n’écrit/lit ces fichiers:
A clique sur 1 => Traitement des fichiers 1
B clique sur 2 => Traitement des fichiers 2 (qui sont indépendants des fichiers 1)
C clique sur 1 => Traitement des fichiers 1
Donc ce dont j'ai besoin, c'est de pouvoir bloquer C puisque A effectue déjà les traitements sur 1 MAIS de pouvoir laisser B effectuer ses traitements sur 2 vu que ces fichiers sont indépendants de 1 et que personne d'autre ne les utilisent.
Et vu que la synchronisation semble bloquer TOUS les threads qui effectuent les mêmes méthodes cela ne convient pas.
J’étais parti sur quelque chose comme cela :
je créer une liste static, avec les fichiers en cours de traitement (A clic sur 1 => 1 est dans la liste etc..). Et si un autre client clic sur 1, il sera déjà dans la liste, donc je le mets en attente.
Peut être y a t-il une autre solution ?
Cordialement![]()
Partager