J'ai un thread qui surveille les événements du système de fichiers sur Mac OS X. Si je copie 100 fichiers dans un dossier qui est regardé, je reçois évidemment plusieurs événements de système de fichiers, et donc plusieurs appels de rappel. Je me demande si ces appels de rappel sont traités les uns après les autres? Ou chaque événement appelle-t-il un thread OS, qui à son tour appelle la fonction de rappel, auquel cas nous aurions plusieurs threads chacun exécutant la même fonction de rappel?Question sur plusieurs rappels se produisant en même temps
Répondre
Cela dépend du mécanisme que vous utilisez pour observer les événements du système de fichiers.
Chaque accès à un fichier génère une notification dans un noyau.
Si vous utilisez l'API publique FSEvents, des mises à jour trop fréquentes sont fusionnées en une seule notification. Dans ce cas, la fin de réception est gérée par un run loop, c'est-à-dire que le rappel est et non appelé dans le nouveau thread d'arrière-plan ou le contexte du thread OS. Il est exécuté dans la boucle d'événements que vous avez spécifiée, généralement le thread principal qui exécute la boucle principale de traitement des événements.
Si vous tapez directement sur /dev/fsevents
(voir par exemple the OS X book), vous obtenez tous les événements du thread appelant un par un, avec éventuellement plusieurs événements renvoyés par un appel. De même, si vous utilisez plutôt kqueue
dérivé de BSD, vous obtiendrez plusieurs événements de l'appel kqueue
si les événements sont fréquents.
Dans tous les cas, le système d'exploitation ne fonctionnent pas votre rappel dans un thread nouveau/OS, ni par magie dupliquer votre fil à regarder l'activité du système de fichiers, afin de pouvoir traiter les événements en même temps.
- 1. Plusieurs UIViewController travaillant en même temps?
- 2. Jouer plusieurs fichiers FLV en même temps?
- 3. Contrôle de plusieurs formulaires en même temps
- 4. C# appeler plusieurs webservices en même temps
- 5. JQuery - SlideToggle plusieurs DIV en même temps?
- 6. Abonnement ASP.NET Empêcher les utilisateurs de se connecter en tant que même utilisateur sur plusieurs machines en même temps
- 7. DbUnit comment se prémunir contre plusieurs tests en cours d'exécution en même temps?
- 8. Plusieurs loadmovie() se termine avec plusieurs vidéos jouées en même temps!
- 9. tuyau plusieurs sorties au même fichier en même temps?
- 10. Construire plusieurs ports (en utilisant macports) en même temps
- 11. PHP 2 personnes se connectant en même temps sur le même ordinateur pt.02
- 12. plusieurs appels ajax en même temps remplacer l'autre
- 13. Empêcher de toucher plusieurs boutons en même temps
- 14. Minuteur global en Javascript avec plusieurs rappels
- 15. Facebook Connect - se connecter et accorde l'autorisation en même temps
- 16. jqueryui draggable question: comment faire glisser plusieurs éléments en même temps?
- 17. Plusieurs CAKeyframeAnimation dans différentes couches en même temps
- 18. comment prendre en charge plusieurs requêtes sql sur un site Web en même temps?
- 19. Android API Bluetooth se connecter à plusieurs périphériques en même temps
- 20. comment se connecter à plusieurs comptes de site Web en même temps que Python
- 21. Comment se connecter à plusieurs bases de données en même temps
- 22. Dates MongoImport se produisant avant l'époque
- 23. Formulation de plusieurs champs de date mySQL en même temps
- 24. Comment puis-je attribuer plusieurs attributs Moose en même temps?
- 25. Comment faire fonctionner plusieurs croquis de processing.js en même temps
- 26. valgrind: Ouvrir plusieurs fichiers de suppression en même temps
- 27. Plusieurs animations dans un Storyboard en même temps?
- 28. SWT: Vérifiez si plusieurs touches sont pressées en même temps
- 29. Visual Studio 2005 - Refactoriser plusieurs attributs en même temps?
- 30. Chargement de plusieurs flux en même temps avec simplexml?