s'il vous plaît considérer les points suivants:Le verrouillage d'une file d'attente tout en re-commande dans Coldfusion
J'ai une file d'attente d'objets représentés comme un tableau.
Je les processus du haut de la matrice (à la position 1) avant d'appeler
arrayDeleteAt()
pour le retirer de la matrice.J'ajoute un nouvel élément de file d'attente en haut de le tableau en utilisant
arrayAppend()
.
Cela fonctionne très bien. Cependant, je souhaite maintenant réorganiser le tableau immédiatement après l'ajout d'un élément. Je crains que si un thread sort de la file d'attente, il trouve que l'ordre de la file d'attente a changé entre la position 1 et la suppression de l'élément 1 - parce qu'un article supplémentaire a été supprimé ajouté la file d'attente a été re-triée. Je dois donc m'assurer que ma file d'attente est sûre pour les threads.
Y a-t-il un moyen de le faire en utilisant le tag cflock
? Puisque mon code d'ajout et de suppression se trouve à différents endroits dans le code, le thread exécutant un bit de code devrait savoir qu'un thread exécute un autre bit de code spécifique et s'arrêter jusqu'à ce que ce thread ait arrêté d'exécuter son code. Ou est-il préférable de simplement lever un drapeau pendant que le tri est en cours et d'empêcher que quelque chose ne soit retiré de la matrice pendant que le tri est en cours?
Tout cela se produit dans la portée APPLICATION
sur un serveur CF 8 Enterprise.
Merci d'avance pour toute aide.
Ciaran
Merci. Je ne savais pas ce que vous pourriez avoir plus d'un verrou avec le même nom - j'espérais vraiment que ce serait le cas :) –
@ciaranarcher: Meilleur choix et un nom non ambigu. Les verrous nommés sont à l'échelle du serveur! – Tomalak