Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Pierrick's Blog

.Net "full power"

Microsoft Parallel Extensions disponible en CTP

Pour ceux qui utilise Visual Studio 2008 et le framework 3.5, vous pouvez télécharger la CTP de décembre "Microsoft Parallel Extensions"

à quoi ça sert ?

1) pouvoir éxecuter des requêtes LINQ en parallèle (PLINQ)
2) pouvoir executer des tâches en parallèle

de manière plus général ce framework fourni l'infrastructure de gestion de tâches parallèles, optimize l'utilisation des threads en fonctions du matériel.

Prenons un exemple : Rechercher un mot dans des fichiers (i.e « coucou » dans tous mes fichiers .cs)

class Program

{

    private static int nbFiles;

    private static int nbMatchFiles;

 

    static void Main(string[] args)

    {

        nbFiles = 0;

        nbMatchFiles = 0;

        SearchFor(@"C:\Pierrick\Projects\dotnet", "coucou", true);

        Console.WriteLine(string.Format("Total files : {0}", nbFiles));

        Console.WriteLine(string.Format("found in files : {0}", nbMatchFiles));

        Console.WriteLine("Enter to quit");

        Console.ReadLine();

    }

 

    private static void SearchFor(string path, string text, bool recurse)

    {

        Parallel.ForEach(Directory.GetFiles(path, "*.cs"), csFilePath =>

        {

            Interlocked.Increment(ref nbFiles);

            Parallel.Do(() => FindInFile(csFilePath, text));

        });

        if (recurse)

            Parallel.ForEach(Directory.GetDirectories(path), dirName => SearchFor(dirName, text, recurse));

    }

 

    private static void FindInFile(string csFilePath, string text)

    {

        Console.WriteLine(string.Format("thId:{0}, Search in {1}",System.Threading.Thread.CurrentThread.ManagedThreadId,Path.GetFileName(csFilePath)));

        if (File.ReadAllText(csFilePath).IndexOf(text) >= 0)

            Interlocked.Increment(ref nbMatchFiles);

    }

}

 

Efficace non ?  Je crois que je vais rapidement abandonner delegate.BeginInvoke et autre ThreadPool.QueueUserWorkItem.

 

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: vendredi 7 décembre 2007 12:42 par pierrick
Classé sous : , ,

Commentaires

cyril a dit :

A noter que le msi de cette CTP ne fait QUE créer un dossier dans program files avec l'assemblies system.threading et des exemples.

Ca ne salit pas la machine et peut donc être installé sans VPC !

# décembre 7, 2007 16:02

brunews a dit :

Pratique, simple d'emploi ou tout ce que vous voudrez, ok.

Mais "efficace", c'est à tester et mesurer les perfs avant de pouvoir le dire.

# décembre 7, 2007 16:24
Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- TechDays Paris 2012 : Comment SharePoint a sauvé mes TechDays par Blog Technique de Romelard Fabrice le il y a 8 heures et 39 minutes

- Perspective 3.0 pour Silverlight 5.0 par Perspective le il y a 9 heures et 59 minutes

- TechDays Paris 2012 : Top 10 des Best Practices pour SQL Server par Blog Technique de Romelard Fabrice le il y a 15 heures et 36 minutes

- TechDays Paris 2012 : Kinect + Office 365 un bon geste pour votre SI par Blog Technique de Romelard Fabrice le il y a 15 heures et 59 minutes

- TechDays Paris 2012 : Pleinière du premier jour par Blog Technique de Romelard Fabrice le il y a 16 heures et 14 minutes

- [SharePoint 2010] Erreur d’analyse de contenu “L’élément SharePoint en cours d’analyse a renvoyé une erreur lors de la demande de données auprès du se... par Julien Chable le il y a 20 heures et 47 minutes

- [TechDays2012] Oui j’y serai! par Blog de Jérémy Jeanson le 02-06-2012, 22:13

- TFS Integration Tools – Suivi des synchronisations avec Reporting Services par Vivien Fabing le 02-05-2012, 17:46

- CSS Content State Selectors (Personnal Draft) par Le blog de FremyCompany le 02-04-2012, 15:38

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le 02-03-2012, 14:22