Questions marquées «thread-safety»

Un morceau de code est thread-safe s'il ne manipule que les structures de données d'une manière qui permet une exécution cohérente de ce code par plusieurs threads. Un code peut être thread-safe, conditionnellement sûr (exclusion mutuelle requise) ou unsafe (ne peut être utilisé en toute sécurité que par un thread).

181
Queue.Queue vs collections.deque

J'ai besoin d'une file d'attente dans laquelle plusieurs threads peuvent mettre des éléments et à partir de laquelle plusieurs threads peuvent lire. Python a au moins deux classes de files d'attente, Queue.Queue et collections.deque, la première utilisant apparemment la seconde en interne. Les deux...

145
Les méthodes statiques non synchronisées sont-elles sûres pour les threads si elles ne modifient pas les variables de classe statiques?

Je me demandais si vous aviez une méthode statique qui n'est pas synchronisée, mais qui ne modifie aucune variable statique, est-elle thread-safe? Et si la méthode crée des variables locales à l'intérieur? Par exemple, le code suivant est-il thread-safe? public static String[] makeStringArray(...

140
Le! = Check est-il sûr?

Je sais que les opérations composées telles que i++ne sont pas thread-safe car elles impliquent plusieurs opérations. Mais la vérification de la référence avec elle-même est-elle une opération thread-safe? a != a //is this thread-safe J'ai essayé de programmer cela et d'utiliser plusieurs threads...

124
Que signifie threadsafe?

Récemment, j'ai essayé d'accéder à une zone de texte à partir d'un fil (autre que le fil d'interface utilisateur) et une exception a été levée. Il a dit quelque chose sur le "code n'étant pas thread-safe" et j'ai donc fini par écrire un délégué (un exemple de MSDN a aidé) et l'appeler à la place....

123
Propriété Thread-safe List <T>

Je veux une implémentation de en List<T>tant que propriété qui peut être utilisée sans aucun doute en toute sécurité avec les threads. Quelque chose comme ça: private List<T> _list; private List<T> MyT { get { // return a copy of _list; } set { _list = value; } } Il semble que...