Articles of multithreading

TransactionScope et multi-threading

Je me demandais comment vous utiliseriez la classe TransactionScope correctement lorsque vous traitez de multithreading? Nous créons une nouvelle scope dans notre thread principal et nous générons ensuite quelques threads de travail et nous souhaitons que ceux-ci participent à la scope principale, de sorte que la restauration soit appelée sur chaque travailleur si la scope […]

Comment créer un verrou multi-lecture / écriture unique à partir de primitives de synchronisation plus basiques?

Nous avons constaté que nous avons plusieurs points dans notre code où les lectures simultanées de données protégées par un mutex sont plutôt courantes, tandis que les écritures sont rares. Nos mesures semblent dire que l’utilisation d’un mutex simple entrave sérieusement les performances du code qui lit ces données. Nous aurions donc besoin d’un mutex […]

Où puis-je trouver un bon tutoriel sur le multithreading iPhone / Objective-C?

Je commence juste à utiliser le multithreading et je cherchais une bonne explication. Je ne sais pas s’il existe des différences dans le fonctionnement du multithreading sur les Mac et les iPhones. Quel est un bon lien vers des tutoriels avec un exemple de code?

Quelle est la meilleure façon de verrouiller plusieurs std :: mutex?

Note: Cette question concerne C ++ 11. La réponse à la même question en C ++ 17 (ou versions ultérieures) peut avoir changé. Pour plus de détails: std :: lock_guard ou std :: scoped_lock? Lorsque nous voulons verrouiller plusieurs std::mutex , nous utilisons std::lock() . Mais std::lock() ne fournit pas de fonctionnalité RAII. Lorsque nous […]

Quelle est la fonction de correspoding pour synchronized in java?

synchronized en Java peut garantir la sécurité du thread. Qu’en est-il du C++ ? Je vous remercie!

Utiliser rand () de stdlib à partir de plusieurs threads

J’ai plusieurs threads qui exécutent tous la même fonction. Dans chacun d’eux, ils génèrent un nombre aléatoire différent plusieurs fois. Nous avons essayé de le faire en plaçant srand(time(0)) au début de la fonction, mais il semble qu’ils obtiennent tous le même numéro. Faut-il appeler srand(time(0)) une seule fois par programme, c’est-à-dire au début de […]

Quelle est la raison possible d’une exception java.util.concurrent.RejectedExecutionException dans un SingleThreadExecutor

Je crée l’exécuteur suivant dans un singleton: final private ExecutorService executor = Executors.newSingleThreadExecutor(new ThreadFactory() { final ThreadFactory delegate = Executors.defaultThreadFactory(); public Thread newThread(Runnable paramAnonymousRunnable) { Thread localThread = this.delegate.newThread(paramAnonymousRunnable); localThread.setName(“MyTask-” + localThread.getName()); localThread.setDaemon(XXX.this.daemonThread); return localThread; } }); Et pendant l’exécution du programme, il y a beaucoup d’appel à cette méthode du singleton. Les appels sont […]

Sécurité des threads des blocs statiques en Java

Disons que j’ai du code Java: public class SomeClass { static { private final double PI = 3.14; private final double SOME_CONSTANT = 5.76; private final double SOME_OTHER_CONSTANT = 756.33; } //rest of class } Si un thread instancie une instance de SomeClass et est en train d’initialiser les valeurs du bloc statique lorsqu’un deuxième […]

En utilisant les directives AsParallel () / Parellel.ForEach ()?

Vous cherchez un petit conseil sur l’utilisation d’ AsParallel() ou de Parallel.ForEach() pour accélérer cela. Voir la méthode que j’ai (simplifiée / bastardisée pour cet exemple) ci-dessous. Il prend une liste comme “US, FR, APAC”, où “APAC” est un alias pour peut-être 50 autres pays “US, FR, JP, IT, GB”, etc. La méthode devrait prendre […]

Synchronisation sur les variables locales

Aujourd’hui, j’ai été confronté à la méthode constructServiceUrl() de la classe org.jasig.cas.client.util.CommonUtils . Je pensais qu’il était très étrange: final SsortingngBuffer buffer = new SsortingngBuffer(); synchronized (buffer) { if (!serverName.startsWith(“https://”) && !serverName.startsWith(“http://”)) { buffer.append(request.isSecure() ? “https://” : “http://”); } buffer.append(serverName); buffer.append(request.getRequestURI()); if (CommonUtils.isNotBlank(request.getQuerySsortingng())) { final int location = request.getQuerySsortingng().indexOf( artifactParameterName + “=”); if (location == […]