Articles of concurrence

Comprendre les goroutines

J’essaie de comprendre la concurrence dans Go. En particulier, j’ai écrit ce programme thread-safe: package main import “fmt” var x = 1 func inc_x() { //test for { x += 1 } } func main() { go inc_x() for { fmt.Println(x) } } Je reconnais que je devrais utiliser des canaux pour empêcher les conditions […]

Quelle est l’utilisation correcte de ConcurrentBag?

J’ai déjà lu les questions précédentes sur ConcurrentBag mais je n’ai pas trouvé d’exemple réel d’implémentation dans le multi-threading. ConcurrentBag est une implémentation de sac thread-safe, optimisée pour les scénarios où le même thread produira et consumra des données stockées dans le sac. ” Actuellement, il s’agit de l’utilisation actuelle dans mon code (ceci est […]

Pourquoi l’ajout de la concurrence réduit-il ce code golang?

J’ai un peu de code Go que j’ai bricolé pour répondre à un peu de curiosité concernant un jeu vidéo que joue mon beau-frère. Essentiellement, le code ci-dessous simule les interactions avec les monstres dans le jeu et combien de fois il peut s’attendre à ce qu’ils déposent des objects lors de leur défaite. Le […]

Déterminer par programme quel thread Java détient un verrou

Est-il possible lors de l’exécution de vérifier par programmation le nom du thread qui contient le verrou d’un object donné?

pthread_join () et pthread_exit ()

J’ai une question sur la programmation en simultané C. Dans la bibliothèque pthread, le prototype de pthread_join est int pthread_join(pthread_t tid, void **ret); et le prototype de pthread_exit est: void pthread_exit(void *ret); Donc, je suis confus que, pourquoi pthread_join prend la valeur de retour du processus comme un pointeur sur un pointeur void partir du […]

Processus, fils, fils verts, protothreads, fibres, coroutines: quelle est la différence?

Je lis sur la concurrence. J’ai un peu plus de tête avec des termes qui ont des définitions similaires. À savoir: Processus Des filets “Les fils verts” Filets Protothiques Des fibres Coroutines “Goroutines” dans la langue de Go Mon impression est que les distinctions reposent sur (1) si elles sont vraiment parallèles ou multiplexées; (2) […]

Comment commence-t-on un fil dans Clojure?

J’ai beaucoup lu sur la qualité de Clojure en matière de concurrence, mais aucun des didacticiels que j’ai lus n’explique comment créer un thread. Est-ce que vous faites juste (.start (Thread. Func)), ou est-ce qu’il y a une autre manière que j’ai ratée?

Ajout simultané de threads à ArrayList – que se passe-t-il?

Nous avons plusieurs threads appelant add(obj) sur une ArrayList . Ma théorie est que lorsque add est appelé simultanément par deux threads, seul un des deux objects ajoutés est réellement ajouté à ArrayList . Est-ce plausible? Si oui, comment vous en sortez-vous? Utilisez une collection synchronisée comme Vector ?

Envelopper un calcul asynchrone dans un calcul synchrone (bloquant)

questions similaires: Motif pour encapsuler une fonction JavaScript asynchrone afin de la rendre synchrone Envelopper une méthode asynchrone de manière synchrone en C # J’ai un object avec une méthode que je voudrais exposer aux clients de la bibliothèque (en particulier les clients de script) comme quelque chose comme: interface MyNiceInterface { public Baz doSomethingAndBlock(Foo […]

Comment faiblesseCompareAndSet peut-il échouer s’il est implémenté exactement comme compareAndSet?

(notez que cette question ne concerne pas CAS, il s’agit du “ Javadoc ” peut échouer ). La seule différence dans le Javadoc entre ces deux méthodes à partir de la classe AtomicInteger est que la liste faiblesseCompareAndSet contient le commentaire: “peut échouer de manière intempestive” . Maintenant, à moins que mes yeux ne soient […]