2010-08-28 12 views
2

Je suis en train de concevoir un composant à exécuter en tant que backend d'un site Web. Le composant s'occupera de la logique IA, et je la construis sous C++. Serait-il préférable que je laisse chaque session démarrer un nouvel espace d'adressage EXE, ou que le fichier EXE soit opérationnel et que chaque session démarre un nouveau thread?Choix de conception lors de l'implémentation d'un EXE dans un modèle d'exécution Web

Ou y a-t-il de meilleures suggestions?

Répondre

1

Je ferais mieux de garder un processus en vie et de créer un nouveau fil pour chaque 'session': si vous cherchez de bonnes performances en charge lourde, en démarrant un nouveau processus (fork, initialisation de votre application, etc.) sera très lent et peut constituer un goulot d'étranglement. Par rapport à cela, la création d'un nouveau thread (dans l'espace utilisateur) est beaucoup plus légère.

Encore mieux, vous pouvez également faire tourner le processus et créer un pool de threads. Ensuite, un thread 'manager' va traiter les nouvelles connexions, l'assigner à un thread existant et le démarrer. Dans ce cas, vous n'avez même pas besoin de créer un nouveau thread pour chaque nouvelle connexion. Et si nécessaire, le thread de gestion peut adapter le nombre de threads existants à la charge de votre application.

Editer: Cela peut être utile: Apache MPM model