Mon programme .NET doit exécuter un algorithme qui utilise intensivement les bibliothèques tierces (32 bits), dont la plupart sont du code non géré. Je veux conduire le CPU aussi fort que possible, de sorte que le code exécute plusieurs threads en parallèle pour répartir le travail.Recommandations pour IPC entre les processus parent et enfant dans .NET?
Je trouve que l'exécution simultanée de tous ces threads entraîne des pointes de mémoire temporaires, ce qui entraîne l'approche de la limite de 2 Go de la taille de la mémoire virtuelle du processus. Cette mémoire est relâchée assez rapidement, mais de temps en temps si assez de threads entrent les mauvaises sections de code à la fois, le processus croise la "ligne rouge" et le code non managé ou le code .NET rencontre une erreur de mémoire insuffisante. Je peux réduire le nombre de threads, mais mon utilisation du processeur n'est pas aussi élevée que je le voudrais. Je pense à créer des processus de travail plutôt que des threads de travail pour aider à éviter les erreurs de mémoire, car cela donnerait à chaque thread d'exécution ses propres 2 Go d'espace d'adressage virtuel (ma boîte a beaucoup de RAM). Je me demande quelles sont les meilleures/plus faciles méthodes pour communiquer l'entrée et la sortie entre les processus dans. NET?
Le système de fichiers est un choix évident. Je suis habitué à la mémoire partagée, aux tuyaux nommés, et à ceux de mon fond UNIX. Existe-t-il un mécanisme spécifique à Windows ou .NET que je devrais utiliser?
Avec un système d'exploitation 32 bits, vous pouvez également ajouter un autre gigaoctet de mémoire disponible pour l'application en utilisant le commutateur boot.ini/3GB en 2000/XP et IncreaseUserVa dans Vista/7. –