2010-06-21 7 views

Répondre

4

Je conçois la protection de filet dans mes composants car ce sont des composants réutilisables et évolutifs destinés à fonctionner dans n'importe quel environnement que je peux anticiper de façon réaliste. Plusieurs fois, ils sont initialement utilisés dans un environnement de thread unique. Souvent, la portée de l'implémentation s'étend pour inclure plus de threads. Ensuite, je n'ai pas besoin de rechercher des ressources pour me protéger des nouveaux scénarios d'accès.

+1

Oui, c'est toujours une bonne idée d'anticiper en ce qui concerne la concurrence. – ChaosPandion

+0

Oui, c'est le problème auquel je suis confronté. Pour l'instant mon programme est mono-thread, mais il est fort probable qu'il y aura plusieurs threads dans le futur ... – Mewzer

1

Mutex peut être logique, car Mutex peut être utilisé pour le partage à l'échelle du système, au lieu du partage interne à l'échelle du processus. Par exemple, vous pouvez utiliser un Mutex à prevent an application from being started twice.

1

Cela peut être un peu là-bas, mais disons que vous écrivez une fonction récursive et que vous voulez que chaque niveau soit enregistré avec une ressource séparée. De cette façon, vous pouvez garder la responsabilité de nettoyer la ressource en un seul endroit (Le pool de ressources).

+0

Dans une application véritablement à un seul thread, cependant, il y a probablement de meilleures options pour cela ... –

+0

@Reed - Je suis sûr de cela, c'est pourquoi j'ai ajouté mon petit avertissement. – ChaosPandion

1

Cela ressemble à une question piège. Techniquement, oui. Un mutex nommé peut être utilisé pour synchroniser plusieurs processus contenant un seul thread dans chacun.

1

Vous pouvez utiliser system-wide semaphores (et même mutex) pour faire inter-process communication.

Vous pouvez signaler un processus monothread vers un autre processus monothread par acquire()/release() -ing sur un sémaphore nommé, par exemple.

1

Si l'environnement prend en charge les interruptions du système, il ajoute un comportement non linéaire. Le semaphore peut être utilisé pour dormir dans le fil principal jusqu'à ce que l'interruption se déclenche.