none
Multi Thread Lock + Sleep RRS feed

  • Discussion générale

  • Bonjour à tous,

    Voila j'ai un petit problème dont je dois avouer ne pas comprendre l'origine.

    J'ai 3 Thread qui remplisse une Queue<Guid> (à raison de 1000 Guid chacun). et j'ai 2 thread qui les récupère pour les insérer dans une DB.

    Je verrouille la Queue le temps de récuperer un élément si celle-ci en contient et je libère le verrou rapidement pour continuer mon process. S'il n'a pu en retirer un, je demande au sous Thread de dormir une demi seconde.

    Résultat avec le Sleep j'ai 2800 à 2950 insertions dans la DB -> en enlevant le sleep 3000 à chaque fois.

    Je sèche, une idée?

    private void ActionThreadOut()
            {
                int StopCount = 0;
                while (true)
                {
                    Guid CurrentValue = Guid.Empty;
                    lock (GeneratedValue)
                    {
                        if (GeneratedValue.Count > 0)
                        {
                            StopCount = 0;
                            CurrentValue = GeneratedValue.Dequeue();
                        }
                        else if (StopCount > MaxWaitingLoop)
                        {
                            return;
                        }
                        else
                        {
                            StopCount++;
                        }
                    }

                    if (CurrentValue != Guid.Empty)
                    {
                        // Insert Into Database
                    }
                    else
                    {
                        Thread.Sleep(500);
                    }
                }
            }





    • Modifié Thierry Morre mardi 11 septembre 2012 11:55
    • Type modifié Aurel Bera vendredi 21 septembre 2012 13:22 Pas de reponse
    mardi 11 septembre 2012 09:53

Toutes les réponses