URL: https://linuxfr.org/forums/general-cherche-logiciel/posts/acc%C3%A8s-concurrents-deception-windowsienne Title: Accès concurrents, deception windowsienne Authors: manatlan Date: 2005年10月07日T15:29:10+02:00 Tags: Score: 0 Voilà, c'est partie d'une discussion, entre collègues. On voulais loguer des trucs dans un fichier à partir de pages php (sur un serveur apache/linux). Et un collègue soutenait qu'il fallait gérer des sémaphores pour éviter les accès concurrents. Du coup, j'ai vite modéliser (en python), un process qui écrit dans un fichier continuellement (test.py) import sys for i in range(10000): £spaces£ £/spaces£fid=open("test.txt","a") £spaces£ £/spaces£if fid: £spaces£ £/spaces£fid.write("%d-%s\n" % (i,sys.argv[1])) £spaces£ £/spaces£fid.close() et j'en ai lancé plusieurs en même temps (comme ceci : python test.py "nom") pour vérifier que chaque process a écrit toutes ses lignes, j'ai fait un autre script (verif.py) : d={} for i in open("test.txt","r"): £spaces£ £/spaces£num,nom = i.strip().split("-") £spaces£ £/spaces£if nom not in d: £spaces£ £/spaces£d[nom]=[ num] £spaces£ £/spaces£else: £spaces£ £/spaces£d[nom].append(num) for k in d: £spaces£ £/spaces£print k, len(d[k]) et bien, sous Windows XP (pentium M 1.4), avec 4 process, et 10000 écritures par process ... il en manquait régulièrement 4 / 5 lignes ... j'ai été plus que surpris (et j'ai même perdu un pari ;-), je ne m'attendais pas à pouvoir perdre des lignes, et même sur un OS aussi moderne que XP. Et je lui soutenais, que si c'était vraie jadis, à notre époque c'est révolu ! et pourtant ... Sur la même machine, sous linux (ubuntu), impossible de trouver des louper (même avec plus de process, et même avec plus d'écritures) (et en plus, c'était plus rapide) On n'a plus de problèmes de logs, et on ne gèrera pas les accès concurrents ;-), car nos pages php tournent sous un linux ;-) Mais l'experience était assez amusante, pour un vendredi aprem

AltStyle によって変換されたページ (->オリジナル) /