Recherche multithread utilisant c #

voix
2

Je veux seach plus de 15000 valeurs dans une instruction select comme indiqué ci-dessous:

select * from tableA where id in (1,2,3......16000)

Puis-je utiliser des fils, disons autour de 3 et déstiné 15000 valeurs dans l'instruction select de diffrent.

  1. select * from tableA where id in (1,2,3......5000)
  2. select * from tableA where id in (5001....10000)
  3. select * from tableA where id in (10001....15000)

et exécuter ces trois select statment en parallèle.

Créé 17/08/2010 à 17:14
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
2

Oui, mais la question est de savoir pourquoi?

Quelque chose comme cela pourrait vous aider à démarrer:

var itms = new List<YourDataClass>();

var thr1 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));
var thr2 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));
var thr3 = new Thread(new ThreadStart(delegate()
{
    // select code
    // populate itms
}));

thr1.Start();
thr2.Start();
thr3.Start();

Cependant, cela dit, si vos identifiants sont des entiers et ( en fonction de votre échantillon) la plage de INvaleurs sont séquentielles, vous voudrez peut - être passer à un where id > 1 and id < 16000style. Cela peut yeild de meilleures performances.

Créé 17/08/2010 à 17:22
source utilisateur

voix
1

Vous pouvez essayé la fonction de programmation parallèle de C # 4.0

Il est assez simple:

List<String> jobs = new List<String>();
Parallel.ForEach(jobs, job=>
    {
        Foo(job);
    }
);

Jetez un coup d' œil à ceci: http://msdn.microsoft.com/en-us/library/dd460720.aspx

Créé 17/08/2010 à 17:41
source utilisateur

voix
0

Cela est possible et peut même être une bonne idée car l' envoi d' un (très) grande INdéclaration à une base de données peut entraîner des erreurs.

Votre base de données doit gérer vos requêtes parallèles correctement et sans problème.

Créé 17/08/2010 à 17:20
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more